dbx 명령

용도

프로그램을 디버그하고 실행할 수 있는 환경을 제공합니다.

구문

dbx [-a ProcessID] [-B DebugFile] [-c CommandFile] [-I Directory] [-E DebugEnvironment] [-p oldpath=newpath: ... | pathfile] [-u] [-F] [-L ] [-r] [-x] [-v] [-C CoreFile | ObjectFile [CoreFile]]

설명

dbx 명령은 C, C++ 및 Fortran 프로그램을 위한 기호 디버그 프로그램을 제공하여 다음 조작을 수행할 수 있게 합니다.

  • 오브젝트 및 코어 파일을 시험합니다.
  • 프로그램 실행을 위한 제어된 환경을 제공합니다.
  • 선택된 명령문에 중단점을 설정하거나 한 번에 한 행씩 프로그램을 실행합니다.
  • 기호 변수를 디버그하고 올바른 형식으로 표시합니다.

ObjectFile 매개변수는 컴파일러가 생성하는 오브젝트(실행 가능) 파일입니다. dbx 명령에 필요한 정보를 생성하기 위해 프로그램을 컴파일할 때 -g (생성 기호 테이블) 플래그를 사용하십시오.

주: cc 명령의 -g 플래그는 오브젝트 파일이 컴파일될 때 사용되어야 합니다. -g 플래그가 사용되지 않거나 기호 참조가 strip 명령을 사용하여 xcoff 파일에서 제거되는 경우 dbx 명령의 기호 기능이 제한됩니다. 또한 dbx를 사용하여 디버그하려는 실행 파일을 최적화하기 위해 -O 컴파일러 옵션을 사용하지 마십시오. 최적화는 코드를 재배열하며 디버그 데이터를 절충하여 dbx 명령으로 실행 가능 프로그램 디버깅의 가치를 더욱 제한합니다.

-c 플래그가 지정되지 않은 경우 dbx 명령은 사용자의 $HOME 디렉토리에서 .dbxinit 파일을 검사합니다. 그런 다음 사용자의 현재 디렉토리의 .dbxinit 파일을 검사합니다. .dbxinit 파일이 현재 디렉토리에 존재하는 경우 해당 파일이 사용자의 $HOME 디렉토리에 있는 .dbxinit 파일을 재정의합니다. .dbxinit 파일이 사용자의 $HOME 디렉토리나 현재 디렉토리에 존재하는 경우, 해당 파일 부속 명령이 디버그 세션의 시작 시에 실행합니다. 편집기를 사용하여 .dbxinit 파일을 작성하십시오.

ObjectFile이 지정되지 않은 경우 dbx는 오브젝트 파일의 이름이 시험되도록 요청합니다. 기본값은 a.out입니다. 코어 파일이 현재 디렉토리에 존재하거나 CoreFile 매개변수가 지정되는 경우, dbx가 프로그램의 결함이 발생한 위치를 보고합니다. 코어 이미지에 보유된 변수, 레지스터 및 메모리는 ObjectFile의 실행이 시작할 때까지 시험될 수 있습니다. 해당 시점에 dbx 디버그 프로그램이 명령에 대해 프롬프트합니다.

-B 플래그는 대체 오브젝트 파일 또는 시작에 관한 디버그 정보를 포함하는 별도의 .stab 파일을 지정하는 데 사용됩니다. 대체 오브젝트 파일은 프로세스에 첨부하는 동안에만 지정할 수 있습니다. 디버그 정보는 실행하는 프로세스의 디스크 사본 대신 이 대체 오브젝트 파일이나 .stab 디버그 파일로부터 읽어집니다. 이 대체 오브젝트 파일은 원래 오브젝트 파일의 언스트라이프 사본이어야 합니다. 디버그 섹션의 크기가 클 때는 -B 플래그를 사용하십시오. 실행 중에는 오브젝트 파일의 스트립된 사본을 사용하고 디버그할 때는 언스트라이프 사본을 사용하십시오. .stab 디버그 파일은 –bstabsplit 링커 옵션을 통해 생성될 수 있습니다. -B 플래그가 stabsplit 실행 파일에 대해 지정되지 않는 경우 dbx 명령은 executable 디렉토리에서 대응하는 .stab 파일을 획득하려고 합니다.

표현식 처리

dbx 프로그램은 광범위한 표현식을 표시할 수 있습니다. dbx 디버그 프로그램에서 C 구문 및 일부 Fortran 확장을 사용하여 표현식을 지정할 수 있습니다.

다음 연산자가 디버그 프로그램에서 유효합니다.

항목 설명
* (별표) 또는 ^ (캐럿) 간접식이나 포인터 역참조를 표시합니다.
[] (대괄호) 또는 () (괄호) 첨자 배열 표현식을 표시합니다.
. (마침표) 포인터 및 구조체와 함께 이 필드 참조 연산자를 사용하십시오. 이 연산자는 C 연산자 - > (화살표) 가 허용되더라도 불필요하게 만듭니다.
& (앰퍼샌드) 변수의 주소를 표시합니다.
.. (두 개의 마침표) 배열의 하위 섹션을 지정할 때 상한 및 하한을 구분합니다. 예: n[1..4].

다음 유형의 연산이 디버그 프로그램의 표현식에서 유효합니다.

항목 설명
대수식 =, -, *, /(부동 나눗셈), div(정수 나눗셈), mod, exp(지수화)
비트 방식 -, I, bitand, xor, ~. < <, > >
논리 또는,, not, II, & &
비교 <, >, < =, > =, < > 또는 ! =, = 또는 ==
기타 (유형 이름), 크기

논리 및 비교 표현식은 stoptrace에서 조건으로 허용됩니다.

표현식 유형이 검사됩니다. 사용자는 표현식의 이름을 변경하거나 캐스팅 연산자를 사용하여 표현식 유형을 재정의합니다. 유형 이름 바꾸기의 세 양식은 Typename(Expression), Expression|Typename(Typename) Expression입니다. 다음은 x 변수가 값 97을 갖는 정수인 예입니다.

(dbx) print x
97
(dbx) print char (x), x \ char, (char) x, x
'a' 'a' 'a' 97

명령행 편집

dbx 명령은 Korn 쉘에서 제공하는 기능과 비슷한 명령행 편집 기능을 제공합니다. vi 모드는 vi-like 편집 기능을 제공하는 반면, emacs 모드는 emacs와 유사한 제어를 제공합니다.

이러한 기능은 dbx 하위 명령 set -o 또는 set edit를 사용하여 켤 수 있습니다. vi 스타일 명령행 편집을 켜려면 set edit vi 또는 set -o vi부속 명령을 입력하십시오.

또한 EDITOR 환경 변수를 사용하여 편집 모드를 설정할 수도 있습니다.

dbx 명령은 명령의 히스토리를 저장하는데, .dbxhist 히스토리 파일의 명령행에서 입력됩니다. DBXHISTFILE 환경 변수가 설정되지 않으면 $HOME/.dbxhist 히스토리 파일이 사용됩니다.

기본적으로 dbx는 입력된 마지막 128 명령의 텍스트를 저장합니다. DBXHISTSIZE 환경 변수를 사용하여 이 한계를 늘릴 수 있습니다.

플래그

항목 설명
-a ProcessID 디버그 프로그램을 실행 중인 프로세스에 연결합니다. 디버그 프로그램을 연결하려면 이 프로세스에 신호를 전송할 수 있는 권한이 필요합니다. 프로세스 ID를 판별하려면 ps 명령을 사용하십시오. 권한이 있는 경우 dbx 프로그램은 ptrace 시스템 호출을 사용하여 프로세스에 SIGTRAP 신호를 전송하는 프로세스를 인터럽트합니다. 이는 SIGTRAP 신호를 무시할 수 없습니다. 그런 다음 오브젝트 파일의 전체 이름을 판별하고, 기호 정보를 읽으며, 명령을 입력할 수 있는 프롬프트를 표시합니다.
-BDebugFile 이 플래그를 사용하여 시작 시에 대체 디버그 파일을 지정할 수 있습니다.
-c CommandFile 표준 입력(STDIN)에서 읽기 전에 파일에 있는 dbx 부속 명령을 실행합니다. $HOME 디렉토리의 지정된 파일이 첫 번째로 처리된 후, 현재 디렉토리의 파일이 처리됩니다. 현재 디렉토리의 명령 파일이 $HOME 디렉토리의 명령 파일을 재정의합니다. 지정된 파일이 $HOME 디렉토리 또는 현재 디렉토리에 존재하지 않으면, 경고 메시지가 표시됩니다. dbx 프로그램이 시작되면 source 부속 명령을 사용할 수 있습니다.
-C CoreFile 오브젝트 파일을 지정하지 않고 코어 파일을 분석합니다. 이 경우에 dbx 명령은 코어 파일에서 언급된 오브젝트 파일이 현재 디렉토리에 존재하고 코어 파일과 일치하는 경우 해당 파일을 사용합니다. 그렇지 않으면 오브젝트 파일 없이 추가로 진행됩니다. -r 플래그나 -a 플래그 다음에 사용하는 경우 이 플래그는 무시됩니다.
-E DebugEnvironment 디버그 프로그램에 대한 환경 변수를 지정합니다.
-p oldpath=newpath: ... | pathfile 코어 파일을 시험하거나 oldpath=newpath 형식으로 프로세스에 연결할 때 라이브러리 경로에 대한 대체를 지정합니다. oldpath 변수는 (코어 파일이나 연결할 때 프로세스의 로더 섹션에서 저장되는) 대체될 값을 지정합니다. newpath 변수는 대체할 경로를 지정합니다. oldpath 변수와 newpath 변수는 전체 경로, 부분 경로, 상대 경로 또는 절대 경로일 수 있습니다. 복수 대체를 콜론으로 구분할 수 있습니다. 또는, -p 플래그가 이전에 설명된 형식의 맵핑을 읽을 파일의 이름을 지정할 수 있습니다. 파일에서 맵핑을 읽을 때 행당 하나의 맵핑만 허용됩니다. 프로세스에 연결할 때 -p 플래그를 사용하는 경우 디버그 정보는 대체된 경로 파일에서 읽습니다. 경로 파일은 라이브러리의 실행 중 사본과 일치해야 합니다.
-F 지연 읽기 모드를 끄고 dbx 명령이 시작 시에 모든 기호를 읽게 만드는 데 사용할 수 있습니다. 기본적으로 지연 읽기 모드는 켜집니다. 즉, dbx 세션의 시작에 관한 필수 기호 테이블 정보만 읽습니다. 이 모드에서 dbx는 기호 정보를 읽지 않은 로컬 변수 및 유형은 읽지 않습니다. 그러므로 whereis i 같은 명령이 모든 함수에서 로컬 변수 i의 모든 인스턴스를 나열하지 않을 수 있습니다.
-L 연결 기호를 유지합니다.
-I Directory (대문자 i) Directory 변수에 의해 지정되는 디렉토리를 소스 파일에 대해 검색되는 디렉토리 목록에 포함시킵니다. 디폴트는 다음 디렉토리에서 소스 파일을 찾는 것입니다.
  • 컴파일되었을 때 소스 파일이 위치한 디렉토리. 이 디렉토리는 컴파일러가 오브젝트를 소스 경로에 배치했을 경우에만 검색됩니다.
  • 현재 디렉토리
  • 프로그램이 현재 위치하는 디렉토리.
-r 오브젝트 파일을 즉시 실행합니다. 성공적으로 종료되면, dbx 디버그 프로그램이 종료됩니다. 그렇지 않으면, 디버그 프로그램이 입력되고 종료 원인이 보고됩니다.
주: -r을 지정하지 않으면, dbx 명령은 사용자가 명령을 입력하도록 프롬프트를 대기시킵니다.
-u dbx 명령이 파일 이름 기호 앞에 @(at 기호)를 붙입니다. 이 플래그는 모호한 기호 이름이 생기는 것을 방지해 줍니다.
-v dbx 명령이 코어 파일의 유효성 검증을 생략하게 합니다. 이 플래그를 사용하면 일부 섹션이 올바르지 않은 경우에도 코어 파일의 유효한 섹션을 분석할 수 있습니다.
-x dbx 명령이 Fortran 소스 코드에서 나오는 기호에서 _(후미 밑줄) 문자를 스트라이핑하지 못하게 합니다. 이 플래그를 사용하면 dbx 가 다음과 같이 밑줄 문자를 제외하고 동일한 기호를 구별할 수 있습니다.xxxxxx_.

  1. 다음 예제는 프로세스와 동시에 dbx 디버그 프로그램을 시작하는 방법에 대해 설명합니다. 예제는 samp.c라는 프로그램을 사용합니다. 이 C 프로그램은 먼저 -g 플래그를 갖고 컴파일되어 기호 테이블 참조를 포함하는 오브젝트 파일을 생성합니다. 이 경우에 프로그램은 samp라는 이름이 지정됩니다.
    $ cc -g samp.c -o samp
    samp 프로그램이 실행 중일 때 운영 체제가 버스 오류를 보고하고 다음과 같이 사용자의 현재 작업 디렉토리에 코어 이미지를 작성합니다.
    $ samp
    Bus Error - core dumped
    오류가 발생한 위치를 찾아내려면 다음을 입력하십시오.
    $ dbx samp
    시스템이 다음 메시지를 리턴합니다.
    dbx version 3.1
    Type 'help' for help.
    reading symbolic information . . . [
    using memory image in core]
      25   x[i] = 0;
    (dbx) quit
  2. 이 예제는 프로세스에 dbx를 연결하는 방법에 대해 설명합니다. 이 예제는 다음 프로그램 looper.c를 사용합니다.
    main()
    {
          int i,x[10];
           
          for (i = 0; i < 10;);
    }
    i가 절대 증분되지 않기 때문에 프로그램은 절대 종료하지 않습니다. looper.c-g 플래그와 함께 컴파일하여 기호 디버깅 기능을 확보하십시오.
    $ cc -g looper.c -o looper
    명령행에서 looper를 실행하고 다음 단계를 수행하여 프로그램이 실행하는 중에 dbx를 프로그램에 연결하십시오.
    1. dbxlooper에 연결하려면 프로세스 ID를 확인해야 합니다. looper를 백그라운드 프로세스로서 실행하지 않은 경우 다른 X 윈도우가 열려 있어야 합니다. 이 Xwindow에서 다음을 입력하십시오.
      ps -u UserID
      여기서 UserID는 사용자의 로그인 ID입니다. 사용자에게 속하는 모든 사용 중 프로세스는 다음과 같이 표시됩니다.
      PID     TTY      TIME    COMMAND
      68      console   0:04    sh
      467     lft3     10:48    looper

      이 예제에서 looper 와 연관된 프로세스 ID는 다음과 같습니다.467.

    2. dbxlooper에 연결하려면 다음을 입력하십시오.
      $ dbx -a 467

      시스템이 다음 메시지를 리턴합니다.

      Waiting to attach to process 467 . . .
      Successfully attached to /tmp/looper.
      dbx is initializing
      Type 'help' for help.
      reading symbolic information . . .
       
      attached in main at line 5
      5     for (i = 0; i < 10;);
      (dbx)

      이제 프로세스가 원래 dbx로 시작된 것처럼 프로세스를 조회하고 디버그할 수 있습니다.

  3. 실행 파일 objfile의 소스 파일을 검색할 디렉토리를 디렉토리 리스트에 추가하려면 다음을 입력하십시오.
    $dbx -I /home/user/src -I /home/group/src 
    objfile

    dbx 가 시작되면 use 부속 명령을 이 함수에 사용할 수 있습니다. use 명령이 디렉토리의 목록을 재설정하는 반면, -I 플래그는 목록에 디렉토리를 추가합니다.

  4. -r 플래그를 사용하려면 다음을 입력하십시오.
    $ dbx -r samp 
    시스템이 다음 메시지를 리턴합니다.
    Entering debug program . . .
    dbx version 3.1
    Type 'help' for help.
    reading symbolic information . . .
    bus error in main at line 25
      25   x[i] = 0;
    (dbx) quit

    -r 플래그는 사용자가 코어 이미지를 가지고 있지 않더라도 메모리에서 사용자의 프로세스 상태를 검사할 수 있도록 합니다.

  5. 디버그 프로그램에 대한 환경 변수를 지정하려면 다음을 입력하십시오.
    dbx -E LIBPATH=/home/user/lib -E LANG=Ja_JP objfile
  6. 프로세스에 연결하는 동안 대체 오브젝트 파일 및 라이브러리를 지정하려면 다음을 입력하십시오.
    dbx –a 467 –B debug_samp –p /usr/lib/=./dir/debug_libs/
  7. 시작 시에 구분된 디버그 파일을 지정하려면 다음을 입력하십시오.
     dbx –B /usr/debug_samp.stab debug_samp

dbx 부속 명령

주: 부속 명령은 dbx 디버그 프로그램을 실행하는 동안에만 사용할 수 있습니다.
항목 설명
/ 현재 소스 파일에서 패턴을 정방향으로 검색합니다.
? 현재 소스 파일에서 패턴을 역방향으로 검색합니다.
addcmd dbx 부속 명령을 지정된 이벤트 번호에 추가합니다.
alias dbx 부속 명령의 별명을 작성합니다.
assign 변수에 값을 지정합니다.
attribute 전체 또는 선택된 속성 오브젝트에 관한 정보를 표시합니다.
call 이름이 지정된 프로시저 또는 함수와 연관된 오브젝트 코드를 실행합니다.
case dbx 디버그 프로그램이 기호를 해석하는 방법을 변경합니다.
catch 신호가 애플리케이션 프로그램으로 보내지기 전에 신호의 트랩을 시작합니다.
clear 특정 소스 행의 모든 정지를 제거합니다.
cleari 주소에서 모든 중단점을 제거합니다.
condition 전체 또는 선택된 조건 변수에 관한 정보를 표시합니다.
cont 애플리케이션 프로그램이 종료되거나 다른 중단점을 만나게 될 때까지 현재의 정지 지점에서 해당 프로그램 실행을 계속합니다.
corefile 코어 파일에 관한 상위 레벨 데이터를 표시합니다.
coremap 특정 주소 공간 영역의 맵핑을 표시합니다.
delcmd 지정된 이벤트 번호와 연관된 dbx 부속 명령을 삭제합니다.
delete 지정된 이벤트 번호 및 스레드에 대한 tskip 계수에 해당하는 추적 및 중지를 제거합니다.
detach 애플리케이션을 계속 실행하고 디버그 프로그램을 종료합니다.
disable 지정된 이벤트 숫자에 해당하는 추적 및 정지를 사용 불가능하게 합니다.
display memory 메모리 내용을 표시합니다.
down 현재 함수를 스택 아래로 이동합니다.
dump 지정된 프로시저에 있는 변수의 이름과 값을 표시합니다.
edit 지정된 파일에서 편집기를 시작합니다.
enable 지정된 이벤트 숫자에 해당하는 추적 및 정지를 사용 가능하게 합니다.
fd 파일 설명자 정보를 표시합니다.
file 현재 소스 파일을 지정된 파일로 변경합니다.
frame 현재 함수를 지정된 스택 프레임 번호에 해당되는 함수로 변경합니다.
func 현재 함수를 지정된 프로시저나 함수로 변경합니다.
goto 지정된 소스 행이 다음 실행 행이 되도록 합니다.
gotoi 프로그램 계수기 주소를 변경합니다.
handler pthreads atfork 또는 취소 정리 핸들러에 관한 정보를 표시합니다.
help dbx 부속 명령이나 주제에 대한 도움말 정보를 표시합니다.
ignore 신호가 애플리케이션 프로그램으로 보내지기 전에 신호 트랩을 정지합니다.
kthread 커널 스레드에 관한 정보를 표시합니다.
limitbp 중단점이 실행될 수 있는 횟수를 제한합니다.
list 현재 소스 파일의 행을 표시합니다.
listi 애플리케이션 프로그램의 명령어를 나열합니다.
malloc malloc 서브시스템의 프로그램 사용법에 관한 정보를 표시합니다.
map 애플리케이션의 로드 특성에 대한 정보를 표시합니다.
move 다음 행이 표시되도록 변경합니다.
multproc 멀티프로세스 디버깅을 사용 또는 사용 안함으로 설정합니다.
mutex 전체 또는 선택된 mutex에 관한 정보를 표시합니다.
next 애플리케이션 프로그램을 다음 소스 행까지 실행합니다.
nexti 애플리케이션 프로그램을 다음 기계 명령어까지 실행합니다.
onceblock 1회 블록에 대한 정보를 표시합니다.
plugin 플러그인 부속 명령을 호출하거나 사용 가능한 플러그인의 이름을 표시합니다.
pluginload 플러그인을 로드합니다.
pluginunload 플러그인을 로드 해제합니다.
print 표현식 값을 인쇄하거나 프로시저를 실행하고 그 프로시저의 리턴 코드를 인쇄합니다.
printbp 중단점이 실행되는 횟수를 인쇄합니다.
proc 프로세스에 대한 정보를 표시합니다.
prompt dbx 명령 프롬프트를 변경합니다.
quit dbx 디버그 프로그램을 정지합니다.
registers 모든 범용 레지스터, 시스템 제어 레지스터, 부동소수점 레지스터, 현재 명령어 레지스터의 값을 표시합니다.
재실행 이전 인수로 애플리케이션 실행을 시작합니다.
resource pthread가 소유하거나 대기하는 자원에 대한 정보를 표시합니다.
return 지정된 프로시저로 복귀할 때까지 애플리케이션 프로그램 실행을 계속합니다.
rwlock Rwlocks에 대한 정보를 표시합니다.
run 애플리케이션 실행을 시작합니다.
screen dbx 명령 상호작용을 위한 X 윈도우를 엽니다.
set dbx 디버그 프로그램 변수에 대한 값을 정의합니다.
sh 명령을 실행될 쉘로 전달합니다.
skip 현재의 정지 지점부터 애플리케이션 프로그램 실행을 계속합니다.
source 파일에서 dbx 부속 명령을 읽습니다.
status 중단점에 관한 세부사항을 인쇄합니다. 또한 활성 추적, stop 부속 명령 및 나머지 스레드 tskip 계수를 표시합니다.
step 하나의 소스 행을 실행합니다.
stepi 하나의 기계 명령어를 실행합니다.
stophwp 하드웨어 경계점 정지를 설정합니다.
stop 애플리케이션 프로그램 실행을 정지합니다.
stopi 지정된 위치에 정지를 설정합니다.
thdata 스레드 고유의 데이터를 표시합니다.
thread 스레드를 표시하고 제어합니다.
tls TLS 초기화 템플리트 정보를 표시합니다.
tm_status $texasr 변수에 저장되는 값을 표시하고 해석합니다.
tnext 스레드를 다음 소스 행까지 실행합니다.
tnexti 스레드를 다음 기계 명령어까지 실행합니다.
trace 추적 정보를 인쇄합니다.
tracehwp 하드웨어 경계점 추적을 설정합니다.
tracei 추적을 실행합니다.
tskip 스레드에 대한 중단점을 생략합니다.
tstep 하나의 소스 행에 대해 스레드를 실행합니다.
tstepi 하나의 기계 명령어에 대해 스레드를 실행합니다.
tstop 스레드에 대해 소스 레벨 중단점 정지를 설정합니다.
tstophwp 스레드 레벨 하드웨어 경계점 정지를 설정합니다.
tstopi 스레드에 대한 명령어 레벨 중단점 정지를 설정합니다.
ttrace 스레드에 대해 소스 레벨 추적을 설정합니다.
ttracehwp 스레드 레벨 하드웨어 경계점 추적을 설정합니다.
ttracei 스레드에 대한 명령어 레벨 추적을 설정합니다.
unalias 별명을 제거합니다.
unset 변수를 삭제합니다.
up 현재 기능을 스택 위로 이동합니다.
use 소스 파일을 찾을 때 검색할 디렉토리 리스트를 설정합니다.
whatis 애플리케이션 프로그램 구성요소의 선언을 표시합니다.
where 사용 중인 프로시저 및 함수 리스트를 표시합니다.
whereis 이름이 지정된 ID와 일치하는 모든 기호에 대한 전체 규정을 표시합니다.
which 지정된 ID의 전체 규정을 표시합니다.

/부속 명령

/ [ RegularExpression [ / ] ]

/ 부속 명령은 현재 소스 파일에서 RegularExpression 매개변수에 의해 지정된 패턴을 정방향으로 검색합니다. 인수 없이 / 부속 명령을 입력하면 dbx는 이전 정규식을 파일의 앞쪽으로 검색합니다. 검색은 파일의 끝을 만나면 다시 처음부터 검색하기 시작합니다.

  1. 현재 소스 파일에서 12라는 숫자에 대해 앞쪽으로 검색하려면 다음을 입력하십시오.
    / 12
  2. 이전 검색을 반복하려면, 다음을 입력하십시오.
    /

? (검색) 부속 명령 및 regcmp 서브루틴을 참조하십시오.

? 부속 명령

? [ RegularExpression [ ? ] ]

? 부속 명령은 현재 소스 파일에서 RegularExpression 매개변수에 의해 지정된 패턴을 역방향으로 검색합니다. 인수 없이 ? 하위 명령을 입력하면 dbx 명령이 이전 정규식을 역방향으로 검색합니다. 검색은 파일의 끝을 만나면 다시 처음부터 검색하기 시작합니다.

  1. 현재 소스 파일에서 역방향으로 문자를 검색하려면 다음을 수행하십시오.z, 다음을 입력하십시오.
    ?z
  2. 이전 검색을 반복하려면, 다음을 입력하십시오.
    ?

/ (검색) 부속 명령 및 regcmp 서브루틴을 참조하십시오.

addcmd 부속 명령

addcmd { Number... | all } "commands_string"

addcmd 부속 명령은 dbx 부속 명령을 지정된 이벤트에 추가합니다. 이 지정된 이벤트는 이벤트에 대응하는 중단점, 추적점 또는 경계점이 실행될 때마다 실행됩니다. dbx 부속 명령은 세미콜론 (;) 으로 구분된 dbx 부속 명령의 그룹인 "commands_string" 매개변수를 통해 지정할 수 있습니다. dbx 하위 명령을 추가할 이벤트는 Number 매개변수를 통해 지정하거나 all 플래그를 사용하여 모든 이벤트에 dbx 하위 명령을 추가할 수 있습니다.

플래그

항목 설명
모두 모든 이벤트에 dbx 부속 명령을 추가합니다.

  1. where 부속 명령을 이벤트 번호 1에 추가하려면 다음을 입력하십시오.
    addcmd 1 "where"
  2. registers 부속 명령을 이벤트 번호 2에 추가하려면 다음을 입력하십시오.
    addcmd 2 "registers"
  3. whereregisters 부속 명령을 이벤트 번호 3에 추가하려면 다음을 입력하십시오.
    addcmd 3 "where;registers"

clear 부속 명령, delcmd 부속 명령, delete 부속 명령, disable 부속 명령, enable 부속 명령, stop 부속 명령, status 부속 명령 및 trace 부속 명령을 참조하십시오. 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서의 중단점 설정 및 삭제도 참조하십시오.

alias 부속 명령

alias [ Name [ [ (Arglist) ] String | Subcommand ] ]

alias 부속 명령은 dbx 부속 명령에 대한 별명을 작성합니다. Name 매개변수가 작성될 별명입니다. String 매개변수는 이 부속 명령의 실행 후에 Name으로 참조할 수 있는 일련의 dbx 부속 명령입니다. 매개변수 없이 alias 부속 명령을 사용하면 현재의 모든 별명이 표시됩니다.

  1. 대체rr대상rerun, 다음을 입력하십시오.
    alias rr rerun
  2. 두 개의 부속 명령을 실행하려면print nstepWHENEVERprintandstep명령행에 다음을 입력하십시오.
    alias printandstep "print n; step"
  3. alias부속 명령을 제한된 매크로 기능으로 사용할 수도 있습니다. 예를 들어 다음과 같습니다.
    (dbx) alias px(n) "set $hexints; print n; unset $hexints"
    (dbx) alias a(x,y) "print symname[x]->symvalue._n_n.name.Id[y]"
    (dbx) px(126)
    0x7e

    이 예에서 별명은 다음과 같습니다.px디버깅 환경에 영구적으로 영향을 주지 않고 값을 16진수로 인쇄합니다.

assign 부속 명령

assign 변수=표현식

assign 부속 명령은 Expression 매개변수로 지정되는 값을 Variable 매개변수로 지정되는 변수에 지정합니다.

  1. 값을 지정하려면 다음을 수행하십시오.5to thex다음을 입력하십시오.
    assign x = 5
  2. 값을 지정하려면 다음을 수행하십시오.y변수를x다음을 입력하십시오.
    assign x =  y
  3. 문자 값을 지정하려면 다음을 수행하십시오.'z'to thez다음을 입력하십시오.
    assign  z  =  'z'
  4. 부울 값을 지정하려면 다음을 수행하십시오.false논리 유형 변수B, 다음을 입력하십시오.
    assign  B  =  false
  5. "Hello World"문자열을 문자 포인터로Y, 다음을 입력하십시오.
    assign  Y  =  "Hello  World"
  6. 유형 검사를 사용하지 않으려면 dbx 디버그 프로그램 변수를 설정하십시오.$unsafeassign다음을 입력하여
    set $unsafeassign

변수 표시 및 수정을 참조하십시오.

attribute 부속 명령

attribute [ AttributeNumber ... ]

attribute 부속 명령은 AttributeNumber 매개변수로 정의된 사용자 스레드, 뮤텍스 또는 조건 속성 오브젝트에 대한 정보를 표시합니다. 매개변수를 지정하지 않으면, 모든 속성 오브젝트가 나열됩니다.

나열된 각 속성 오브젝트에 대해 다음과 같은 정보가 표시됩니다.

항목 설명
attr 속성 오브젝트의 기호 이름을 표시합니다. 양식은 다음과 같습니다.$aAttributeNumber.
obj_addr 속성 오브젝트의 주소를 나타냅니다.
type 속성 오브젝트의 유형을 표시합니다. 이 값은 다음과 같을 수 있습니다.thr,mutex또는cond사용자 스레드, 뮤텍스 및 조건 변수의 경우 각각.
state 속성 오브젝트 상태를 나타냅니다. 이 값은 다음과 같습니다.valid또는inval.
stack 스레드 속성 오브젝트의 스택 크기 속성을 나타냅니다.
scope 스레드 속성 오브젝트의 유효범위 속성을 나타냅니다. 이 값이 스레드의 경합 유효범위를 판별하고, 처리 자원을 위해 함께 경합해야 하는 스레드 세트를 정의합니다. 가능한 값은 다음과 같습니다.sys또는pro시스템 또는 프로세스 경합 유효범위의 경우.
prio 스레드 속성 오브젝트의 우선순위 속성을 나타냅니다.
sched 스레드 속성 오브젝트의 스케줄 정책 속성을 나타냅니다. 이 속성은 스케줄링 정책을 제어하며 다음과 같을 수 있습니다.fifo,rr(라운드 로빈) 또는other.
p-shar mutex나 조건 속성 오브젝트의 프로세스 공유 속성을 나타냅니다. mutex나 조건은 다른 프로세스에 속하는 스레드가 여기에 액세스할 수 있으면 프로세스를 공유합니다. 가능한 값은 다음과 같습니다.yes또는no.
protocol mutex의 프로토콜 속성을 나타냅니다. 이 속성은 스레드 우선순위에서 mutex를 보류하는 효과를 결정합니다. 가능한 값은 다음과 같습니다.no_prio,prio또는protect.
clock 조건 속성 오브젝트의 시계 속성을 나타냅니다. 이 속성은 조건 변수를 기다리는 스레드에 제한시간이 지정될 때 사용해야 하는 시계를 판별합니다. 값은 realtime 또는 monotonic일 수 있습니다.
주:
  1. dbx 디버그 프로그램의 print 부속 명령은 기호 속성 이름을 인식하며, 대응하는 오브젝트의 상태를 표시하는 데 사용될 수 있습니다.
  2. 사용 가능한 속성은 POSIX 옵션 구현에 따라 달라집니다.

  1. 모든 속성에 대한 정보를 나열하려면 다음을 입력하십시오.
    attribute
    출력은 다음과 유사합니다.
    attr   obj_addr   type  state  stack   scope    prio 
    sched p-shar
    $a1   0x200035c8  mutex valid                                no 
    $a2   0x20003628  cond  valid                                no
    $a3   0x200037c8  thr   valid  57344    sys      126 other
    $a4   0x200050f8  thr   valid  57344    pro      126 other
      
  2. 속성 1과 3에 관한 정보를 나열하려면 다음을 입력하십시오.
    attribute 1 3
     
    출력은 다음과 유사합니다.
    attr   obj_addr   type  state  stack   scope    prio 
    sched p-shar
    $a1   0x200035c8  mutex valid                                no 
    $a3   0x200037c8  thr   valid  57344    sys      126 other
      

dbx 명령에 대해서는 condition 부속 명령, mutex 부속 명령, print 부속 명령 및 thread 부속 명령을 참조하십시오.

또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅에서 스레드 작성, 뮤텍스 사용조건 변수 사용 을 참조하십시오.

call Subcommand

call 프로시저 ([ 매개변수 ])

call 부속 명령은 Procedure 매개변수에 지정된 프로시저를 실행합니다. 리턴 코드는 인쇄되지 않습니다. 매개변수를 지정하면 매개변수가 실행 중인 프로시저로 전달됩니다.

주: call 부속 명령은 벡터 매개변수를 사용하는 함수를 호출하는 데 사용할 수 없습니다.

dbx 명령을 실행하는 중에 명령을 호출하려면 다음을 입력하십시오.

(dbx) call printf("hello")
hello

printf가 성공적으로 리턴합니다.

case 부속 명령

case [ 기본값 | 혼합 | 하단 | 상단 ]

case 부속 명령은 dbx 디버그 프로그램이 기호를 해석하는 방법을 변경합니다. 기호의 디폴트 처리 방법은 현재 언어에 따라 다릅니다. 현재 언어가 C, C++ 또는 미정의인 경우 기호를 대문자 변환되지 않습니다. 현재 언어가 Fortran인 경우 기호가 소문자로 변환됩니다. 기호가 현재 언어와 일관되지 않은 방식으로 해석되어야 하는 경우에 이 부속 명령을 사용하십시오.

case 부속 명령을 매개변수 없이 입력하면 현재 문자 모드가 표시됩니다.

플래그

항목 설명
디폴트 현재 언어에 따라 다릅니다.
혼합 기호가 실제 나타나는 대로 해석됩니다.
아래 기호가 소문자로 해석됩니다.
UPPER 기호가 대문자로 해석됩니다.

  1. 현재 문자 모드를 표시하려면 다음을 입력하십시오.
    case
  2. 실제로 나타나는 대로 기호를 해석하도록 dbx를 지시하려면 다음을 입력하십시오.
    case mixed
  3. 기호를 대문자로 해석하도록 dbx를 지시하려면 다음을 입력하십시오.
    case upper

변수를 소문자 및 대문자로 변환을 참조하십시오.

catch 부속 명령

catch [ SignalNumber | SignalName ]

catch 부속 명령은 신호가 애플리케이션 프로그램으로 전송되기 전에 지정된 신호 트랩을 시작합니다. 이 부속 명령은 디버그되고 있는 애플리케이션 프로그램이 인터럽트 같은 신호를 처리할 때 유용합니다. 트랩될 신호는 각각 SignalNumber 또는 SignalName 매개변수를 사용하여 번호 또는 이름으로 지정할 수 있습니다. 신호 이름은 대소문자를 구별하지 않으며 SIG 접두어는 선택사항입니다. SignalNumberSignalName 매개변수가 지정되지 않은 경우 모든 신호는 SIGHUP, SIGCLD, SIGALARMSIGKILL 신호를 제외하고 기본적으로 트랩됩니다. 아무 인수도 지정하지 않으면, 찾으려고 하는 현재 신호 리스트가 표시됩니다.

  1. dbx 명령에 의해 포착될 신호의 현재 리스트를 표시하려면 다음을 입력하십시오.
    catch
  2. 신호 트랩SIGALARM, 다음을 입력하십시오.
    catch SIGALARM

ignore 부속 명령 및 신호 처리를 참조하십시오.

clear 부속 명령

clear SourceLine

clear 부속 명령은 특정 소스 행의 모든 정지를 제거합니다. SourceLine 매개변수는 다음 두 형식으로 지정할 수 있습니다.

  • 정수로 지정
  • :(콜론)과 정수 앞에 오는 파일 이름 문자열로 지정

행에 설정된 중단점 제거19, 다음을 입력하십시오.

clear 19

cleari 부속 명령 및 delete 부속 명령. 또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서에서 중단점 설정 및 삭제를 참조하십시오.

cleari 부속 명령

cleariAddress

cleari 부속 명령은 Address 매개변수로 지정되는 주소에 있는 모든 중단점을 지웁니다.

  1. 주소에 설정된 중단점을 제거하려면 다음을 수행하십시오.0x100001b4, 다음을 입력하십시오.
    cleari 0x100001b4
  2. 다음 위치에서 중단점 세트를 제거하려면main()프로시저 주소, 다음을 입력하십시오.
    cleari &main

일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서에서 clear 하위 명령, delete 하위 명령, 중단점 설정 및 삭제를 참조하십시오.

condition 부속 명령

condition [ wait | nowait | ConditionNumber ... ]

condition 부속 명령은 하나 이상의 조건 변수에 대한 정보를 표시합니다. 하나 이상의 ConditionNumber 매개변수가 제공되는 경우 condition 부속 명령은 지정된 조건 변수에 관한 정보를 표시합니다. 플래그나 매개변수를 지정하지 않으면, condition 부속 명령은 모든 조건 변수를 나열합니다.

각 조건에 대해 나열되는 정보는 다음과 같습니다.

항목 설명
cv 조건 변수의 기호 이름을 표시합니다. 양식은 다음과 같습니다.$cConditionNumber.
obj_addr 조건 변수의 메모리 주소를 나타냅니다.
clock 조건 변수의 시계 속성을 표시합니다.
num_wait 조건 변수에서 대기 중인 스레드의 수를 나타냅니다.
waiters 조건 변수에서 대기 중인 사용자 스레드를 나열합니다.

주: dbx 디버그 프로그램의 print 부속 명령은 기호로 된 조건 변수 이름을 인식하며, 해당 오브젝트의 상태를 표시하는 데 사용될 수 있습니다.

플래그

항목 설명
wait 대기 중인 스레드가 있는 조건 변수를 표시합니다.
대기 안함 대기 중인 스레드가 없는 조건 변수를 표시합니다.

  1. 모든 조건 변수에 관한 정보를 표시하려면 다음을 입력하십시오.
    condition
  2. 대기 중인 스레드가 있는 모든 조건 변수에 관한 정보를 표시하려면 다음을 입력하십시오.
    condition  wait
  3. 조건 변수 3에 관한 정보를 표시하려면 다음을 입력하십시오.
    condition 3
    출력은 다음과 유사합니다.
    cv      obj_addr     num_wait  waiters
    $c3     0x20003290         0

attribute 부속 명령, mutex 부속 명령, print 부속 명령 및 thread 부속 명령을 참조하십시오.

또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅조건 변수 사용 을 참조하십시오.

cont 부속 명령

cont [ SignalNumber | SignalName ]

cont 부속 명령은 프로그램이 종료되거나 다른 중단점에 도달할 때까지 현재 정지점부터 애플리케이션 프로그램 실행을 계속합니다. 신호가 SignalNumber 매개변수에서 지정되는 숫자나 SignalName 매개변수에서 지정되는 이름에 의해 지정되는 경우, 프로그램은 해당 신호가 수신되는 것처럼 계속합니다. 신호 이름은 대소문자를 구분하지 않으며 SIG 접두어는 선택사항입니다. 신호가 지정되지 않으면 프로그램은 정지되지 않은 것처럼 계속합니다.

  1. 현재 정지점부터 프로그램 실행을 계속하려면 다음을 입력하십시오.
    cont
  2. SIGQUIT 신호를 받은 것처럼 프로그램 실행을 계속하려면 다음을 입력하십시오.
    cont SIGQUIT

dbx 명령의 경우 detach 하위 명령, dbx 명령의 경우 goto 하위 명령, dbx 명령의 경우 next 하위 명령, dbx 명령의 경우 skip 하위 명령, dbx 명령의 경우 step 하위 명령을 참조하십시오.

corefile 부속 명령

corefile 부속 명령은 실행 파일 이름, 코어 파일 형식 버전 정보, 사용 가능한 데이터를 표시하는 플래그, 고장을 유발한 신호, 코어을 덤프한 프로세스의 실행 모드를 포함하여 코어 파일의 헤더의 정보를 표시합니다.

coremap Subcommand

coremap [ stack | data | sdata | mmap | shm | 로더 ]

coremap 부속 명령은 특정 주소 공간 영역의 맵핑을 표시합니다. 영역 이름을 지정하지 않으면 coremap 부속 명령은 모든 사용 가능한 맵핑을 표시합니다.

  1. 공유 메모리 영역의 맵핑을 표시하려면 다음을 입력하십시오.
    coremap shm
  2. 메모리 맵핑된 영역의 맵핑을 표시하려면 다음을 입력하십시오.
    coremap mmap
  3. 로더 입력 항목이 설명하는 모든 영역의 맵핑을 표시하려면 다음을 입력하십시오.
    coremap loader
  4. 모든 사용 가능한 맵핑을 표시하려면 다음을 입력하십시오.
    coremap

corefile 부속 명령을 참조하십시오.

delcmd 부속 명령

delcmd EventNumber { 숫자 ... | all }

delcmd 부속 명령은 지정된 이벤트와 연관된 dbx 부속 명령을 제거합니다. 제거할 dbx 부속 명령은 Number 매개변수를 통해 지정할 수 있거나, 지정된 이벤트와 연관된 모든 dbx 부속 명령은 all 플래그를 사용하여 제거할 수 있습니다. EventNumber 매개변수는 dbx 부속 명령이 제거될 이벤트를 지정합니다.

플래그

항목 설명
모두 지정된 이벤트와 연관된 dbx 부속 명령을 모두 제거합니다.

  1. 이벤트 번호 2에서 모든 dbx 부속 명령을 제거하려면 다음을 입력하십시오.
    delcmd 2 all
  2. 이벤트 번호 3에서 dbx 부속 명령 번호 1을 제거하려면 다음을 입력하십시오.
    delcmd 3 1
  3. 이벤트 번호 2에서 dbx 부속 명령 번호 1과 2를 제거하려면 다음을 입력하십시오.
    delcmd 2 1 2

addcmd 부속 명령, clear 부속 명령, delete 부속 명령, disable 부속 명령, enable 부속 명령, stop 부속 명령, status 부속 명령 및 trace 부속 명령을 참조하십시오. 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서의 중단점 설정 및 삭제도 참조하십시오.

delete 부속 명령

delete { Number ... | all | tskip [for $tthreadnumber]}

delete 부속 명령은 애플리케이션 프로그램에서 추적 및 정지를 제거하고 스레드에 대한 tskip 계수를 제거합니다. 제거할 추적 및 정지는 Number 매개변수를 통해 지정하거나 all 플래그를 사용하여 모든 추적 및 정지를 제거할 수 있습니다. dbx 디버그 프로그램에 의해 추적 또는 정지와 연관된 번호를 표시하려면 status 부속 명령을 사용하십시오.

스레드에 대해 tskip 부속 명령을 사용하여 설정된 나머지 tskip 계수는 tskip 플래그를 사용하여 삭제할 수 있습니다. status 부속 명령을 사용하여 나머지 스레드 tskip 계수를 표시하십시오. 스레드를 지정하지 않은 경우에는 현재 스레드가 사용됩니다.

플래그 지정

항목 설명
모두 추적과 정지를 모두 제거합니다.
$t의 경우 스레드 번호 스레드 번호를 지정합니다.

  1. 애플리케이션 프로그램에서 모든 추적 및 정지를 제거하려면 다음을 입력하십시오.
    delete all
  2. 이벤트 번호 4에 대한 추적 및 정지를 제거하려면 다음을 입력하십시오.
    delete 4
  3. 스레드 3에 대한 tskip 계수를 제거하려면 다음을 입력하십시오.
    delete tskip for $t3
  4. 현재 스레드에 대한 tskip 계수를 제거하려면 다음을 입력하십시오.
    delete tskip 

일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서clear 하위 명령, cleari 하위 명령, status 하위 명령, tskip 하위 명령 및 중단점 설정 및 삭제 를 참조하십시오.

detach 부속 명령

detach [ SignalNumber | SignalName ]

detach 부속 명령은 애플리케이션 프로그램의 실행을 계속하고 디버그 프로그램을 종료합니다. 다음 방법 중 하나로 신호를 지정할 수 있습니다.

  • SignalName 매개변수를 사용하여 이름
  • SignalNumber 매개변수를 사용하여 번호

    신호 이름은 대소문자를 구분하지 않으며 SIG 접두어는 선택사항입니다.

    신호가 지정되는 경우 프로그램은 해당 신호를 수신한 것처럼 계속합니다. 신호가 지정되지 않으면 프로그램은 정지가 발생하지 않은 것처럼 계속합니다.

  1. 애플리케이션 실행을 계속하고 dbx를 종료하려면 다음을 입력하십시오.
    detach
  2. dbx 를 종료하고 신호를 수신한 것처럼 애플리케이션의 실행을 계속하려면 다음을 수행하십시오.SIGREQUEST, 다음을 입력하십시오.
    detach SIGREQUEST

dbx 디버그 프로그램 사용을 참조하십시오.

disable 부속 명령

disable { 번호 ... 모두 }

disable 부속 명령은 디버그 이벤트와 연관된 추적 및 정지를 사용 불가능하게 합니다. 사용 불가능하게 할 추적 및 정지는 Number 매개변수를 통해 지정할 수 있으며, 모든 추적 및 정지는 all 플래그를 사용하여 사용 불가능하게 할 수 있습니다. dbx 디버그 프로그램에 의해 추적 또는 정지와 연관된 이벤트 번호를 표시하려면 status 부속 명령을 사용하십시오.

플래그

항목 설명
모두 추적과 정지를 모두 제거합니다.

  1. 애플리케이션 프로그램에서 모든 추적 및 정지를 사용 불가능하게 하려면 다음을 입력하십시오.
    disable all
  2. 이벤트 번호 4에 대한 추적 및 정지를 사용 불가능하게 하려면 다음을 입력하십시오.
    disable 4

자세한 정보는 enable subcommand, delete subcommandstatus 부속 명령을 참조하십시오.

또한 중단점 설정 및 삭제 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서를 참조하십시오.

display memory 부속 명령

{ 주소, 주소/| 주소/ [ 계수 ]} [ 모드 ] [ >파일 ]

display memory 부속 명령에는 명령을 초기화하는 키워드가 없으며 다음과 같은 요인으로 제어되는 메모리의 일부분을 표시합니다.

표시되는 메모리 범위는 다음 중 하나를 지정하여 제어됩니다.

  • 두 개의 Address 매개변수

    또는

  • 시작점을 나타내는 하나의 Address 매개변수와, 그 Address로부터 표시되는 행의 갯수를 결정하는 Count.

이름 앞에 &(앰퍼샌드)를 두어서 기호 주소를 지정하십시오. 주소는 다른 주소 및 연산자 +(더하기 부호), -(빼기 부호), *로 이루어진 표현식이 될 수 있습니다. 괄호 안에 들어 있는 표현식은 하나의 주소로 해석합니다.

  • 메모리를 표시하는 형식은 Mode 매개변수가 제어합니다. Mode 매개변수의 디폴트는 현재 모드입니다. Mode 의 초기값은 X입니다. 가능한 모드는 다음과 같습니다.
항목 설명
b 한 바이트를 8진수로 인쇄합니다.
c 한 바이트를 한 문자로 인쇄합니다.
d 축약형 단어를 10진수로 인쇄합니다.
d 긴 단어를 10진수로 인쇄합니다.
df 이중 정밀도 10진수 부동 숫자를 인쇄합니다.
DDf 4배 정밀도 10진수 부동 숫자를 인쇄합니다.
F 단일 정밀도 실수를 인쇄합니다.
G 이중 정밀도 실수를 인쇄합니다.
h 한 바이트를 16진으로 인쇄합니다.
Hf 단일 정밀도 10진수 부동 숫자를 인쇄합니다.
i 기계 명령어를 인쇄합니다.
lld 8바이트 부호 있는 10진수를 인쇄합니다.
llu 부호 없는 8바이트 10진수를 인쇄합니다.
llx 부호 없는 8바이트 16진 숫자를 인쇄합니다.
llo 8바이트의 부호 없는 8진수를 인쇄합니다.
O 축약형 단어를 8진수로 인쇄합니다.
O 긴 단어를 8진수로 인쇄합니다.
p 주소/포인터를 16진으로 인쇄합니다.
q 확장 정밀도 부동 소수점 수를 인쇄합니다.
s 널(null) 바이트로 종료되는 문자열을 인쇄합니다.
X 축약형 단어를 16진수로 인쇄합니다.
X 긴 단어를 16진수로 인쇄합니다.

플래그 지정

항목 설명
>파일 출력을 지정된 파일로 방향 재지정합니다.

  1. 주소에서 시작하여 16진수로 한 단어의 메모리 컨텐츠를 표시하려면 다음을 수행하십시오.0x3fffe460, 다음을 입력하십시오.
    0x3fffe460 / X
  2. 변수에서 시작하는 문자로 2바이트의 메모리 컨텐츠를 표시하려면 다음을 수행하십시오.y다음을 입력하십시오.
    &y / 2c
  3. FORTRAN 문자열 a_string에서 6-8번째 요소를 표시하려면 다음을 입력하십시오.
    &a_string + 5, &a_string + 7/c

일반 프로그래밍 개념: 프로그램 작성 및 디버깅에서 메모리 주소 검사 를 참조하십시오.

down 부속 명령

down [ 계수 ]

down 하위 명령은 현재 함수를 스택 Count 개의 수준 아래로 이동합니다. 현재 함수가 이름을 해석하는 데 사용됩니다. Count 매개변수의 디폴트는 1입니다.

  1. 스택을 한 레벨 아래로 이동하려면 다음을 입력하십시오.
    down
  2. 스택을 세 레벨 아래로 이동하려면 다음을 입력하십시오.
    down 3

up 하위 명령, where 하위 명령 및 스택 추적 표시 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서의 내용을 참조하십시오.

dump 부속 명령

dump [ 프로시저 | "PATTERN"] [ >파일 ]

dump 부속 명령은 지정된 프로시저의 모든 변수 또는 지정된 패턴과 일치하는 변수의 이름과 값을 표시합니다. Procedure 매개변수가 마침표(.)인 경우 모든 활성 변수가 표시됩니다. Procedure 또는 "PATTERN" 매개변수가 지정되면 현재 프로시저가 사용됩니다. "PATTERN" 매개변수는 *, ?[] 메타 문자가 있는 와일드카드 표현식입니다. "PATTERN" 가 사용되면 글로벌 공간에 모든 일치하는 기호가 표시됩니다 (모든 프로시저에서). >File 플래그를 사용하면 출력은 지정된 파일로 방향 재지정됩니다.

플래그

항목 설명
>파일 출력을 지정된 파일로 방향 재지정합니다.

  1. 현재 프로시저에 있는 변수 이름과 값을 표시하려면 다음을 입력하십시오.
    dump
  2. add_count 프로시저에 있는 변수 이름과 값을 표시하려면 다음을 입력하십시오.
    dump add_count
  3. 문자 s로 시작하는 변수 이름과 값을 표시하려면 다음을 입력하십시오.
    dump "s*"
  4. 현재 프로시저에 있는 변수 이름과 값을 var.list 파일로 방향 재지정하려면 다음을 입력하십시오.
    dump > var.list

일반 프로그래밍 개념: 프로그램 작성 및 디버깅에서 변수 표시 및 수정 을 참조하십시오.

edit 부속 명령

edit [ Procedure | File ]

edit 부속 명령은 지정된 파일에 대해 편집기를 시작합니다. 파일은 File 매개변수를 통해서 또는 Procedure 매개변수를 지정하여 지정될 수 있는데, 이 경우 편집기는 해당 프로시저를 포함하는 파일에서 시작됩니다. 파일이 지정되지 않으면 편집기는 현재 소스 파일에서 시작됩니다. 디폴트는 vi 편집기입니다. EDITOR 환경 변수를 필요한 편집기의 이름으로 재설정하여 디폴트를 재정의하십시오.

  1. 현재 소스 파일에서 편집기를 시작하려면 다음을 입력하십시오.
    edit
  2. 편집기를 시작하려면main.c파일, 입력:
    edit main.c
  3. 다음을 포함하는 파일에서 편집기를 시작하려면 다음을 수행하십시오.do_count()다음을 입력하십시오.
    edit do_count

list 부속 명령, vi 또는 vedit 명령을 참조하십시오.

enable 부속 명령

enable { 번호 ... 모두 }

enable 부속 명령은 디버그 이벤트와 연관된 추적 및 정지를 사용 가능하게 합니다. 사용 가능하게 할 추적 및 정지는 Number 매개변수를 통해 지정할 수 있으며, 모든 추적 및 정지는 all 플래그를 사용하여 사용 가능하게 할 수 있습니다. dbx 디버그 프로그램에 의해 추적 또는 정지와 연관된 이벤트 번호를 표시하려면 status 부속 명령을 사용하십시오.

플래그

항목 설명
모두 추적과 정지를 모두 제거합니다.

  1. 애플리케이션 프로그램에서 모든 추적 및 정지를 사용 가능하게 하려면 다음을 입력하십시오.
    enable all
  2. 이벤트 번호 4에 대한 추적 및 정지를 사용 가능하게 하려면 다음을 입력하십시오.
    enable 4

자세한 정보는 disable subcommand, delete subcommand, status subcommand의 내용을 참조하십시오.

또한 중단점 설정 및 삭제 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서를 참조하십시오.

fd 부속 명령

fd [ raw ] [ 시작 [ 종료 ]]

fd 부속 명령은 파일 설명자 정보를 표시합니다. raw 옵션을 사용하면 출력이 원시 16진 형식으로 표시됩니다. 기타 선택적 인수에는 startend 색인이 있습니다. 색인을 지정하지 않으면, 사용 가능한 모든 파일 설명자에 대한 정보가 표시됩니다. 하나의 색인을 사용하면 단일 파일 설명자가 표시되고 두 개를 사용하면 포함 범위가 표시됩니다.

  1. 모든 파일 설명자에 대한 정보를 16진으로 보려면 다음을 입력하십시오.
    fd raw
  2. 3 - 5 범위에 있는 파일 설명자에 관한 정보를 보려면 다음을 입력하십시오.
    fd 3 5

file 부속 명령

file [ File ]

file 부속 명령은 현재 소스 파일을 File 매개변수에 의해 지정된 파일로 변경합니다. 해당 파일에 기록하지 않습니다. File 매개변수는 파일의 전체 경로 이름을 지정할 수 있습니다. File 매개변수가 경로를 지정하지 않는 경우 dbx 프로그램은 사용 경로를 검색하여 파일을 찾으려고 합니다. File 매개변수가 지정되지 않는 경우 file 부속 명령은 현재 소스 파일의 이름을 표시합니다. file 부속 명령은 또한 해당 경로가 알려진 경우 파일의 전체 또는 상대 경로 이름을 표시합니다.

  1. 현재 소스 파일을main.c파일, 입력:
    file main.c
  2. 현재 소스 파일 이름을 표시하려면, 다음을 입력하십시오.
    file

func 부속 명령을 참조하십시오. 또한 현재 파일 또는 프로시저 변경 및 현재 파일 표시 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서를 참조하십시오.

frame 부속 명령

frame [ 번호 ]

frame 부속 명령은 현재 함수를 지정된 스택 프레임 번호 num에 해당하는 함수로 변경합니다. 현재 함수가 이름을 해석하는 데 사용됩니다. 스택 프레임의 번호 지정은 현재 활성인 함수 스택 프레임부터 시작합니다(현재 활성인 함수 프레임은 항상 0으로 번호 지정됩니다). n 개의 프레임이 있는 경우 main 기능의 프레임에 n-1번호가 지정됩니다. 프레임 번호를 지정하지 않으면 현재 프레임과 연관된 함수에 관한 정보가 표시됩니다.

  1. 프레임 번호로 이동2, 다음을 입력하십시오.
    frame 2
  2. 스택의 현재 함수를 표시하려면 다음을 입력하십시오.
    frame

updown 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅에서현재 파일 또는 프로시저 변경 및 스택 추적 표시 를 참조하십시오.

func Subcommand

func [ Procedure ]

func 부속 명령은 현재 함수를 Procedure 매개변수로 지정되는 프로시저 또는 함수로 변경합니다. Procedure 매개변수가 지정되지 않으면 디폴트 현재 함수가 표시됩니다. 현재 함수를 내재적으로 변경하면 현재 소스 파일이 새로운 함수가 포함된 파일로 변경됩니다. 이름 해석에 사용되는 현재 유효범위도 변경됩니다.

  1. 현재 기능을do_count다음을 입력하십시오.
    func do_count
  2. 현재 함수 이름을 표시하려면, 다음을 입력하십시오.
    func

file 부속 명령을 참조하십시오. 또한 현재 파일 또는 프로시저 변경 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서을 참조하십시오.

goto 부속 명령

goto SourceLine

goto 부속 명령은 지정된 소스 행이 다음에 실행되도록 합니다. 일반적으로, 소스 행은 현재 소스 행과 동일한 함수 내에 있어야 합니다. 이 제한을 재정의하려면 set 부속 명령을 $unsafegoto 플래그와 함께 사용하십시오.

실행될 다음 행을 행 6으로 변경하려면 다음을 입력하십시오.

goto 6

cont 부속 명령, gotoi 부속 명령 및 set 부속 명령을 참조하십시오.

gotoi 부속 명령

gotoiAddress

gotoi 부속 명령은 프로그램 계수기 주소를 Address 매개변수로 지정되는 주소로 변경합니다.

프로그램 카운터 주소를 주소로 변경하려면 다음을 수행하십시오.0x100002b4, 다음을 입력하십시오.

gotoi 0x100002b4

goto 부속 명령을 참조하십시오.

handler 부속 명령

handler { atfork | cancel_cleanup [ all | pthread id ]}

handler 부속 명령은 각각 pthread_atforkpthread_cleanup_push를 사용하여 등록되는 atfork 또는 취소 정리 처리기에 관한 정보를 표시합니다. atfork 옵션을 사용하면 pre, parentchild atfork 처리기로 등록된 루틴의 이름이 표시됩니다(비posix 준수 atfork 처리기의 경우 각각의 인수도 같이 표시됩니다). cancel_cleanup 옵션은 모든 등록된 취소 정리 처리기가 표시되도록 하며, 특정 pthread를 지정하는 선택적 pthread id 매개변수나 모든 pthread를 지정하는 all을 갖습니다. 아무 것도 제공되지 않는 경우 현재 pthread에 대한 취소 정리 처리기가 있으면 표시됩니다.

  1. 모든 atfork 처리기에 관한 정보를 보려면 다음을 입력하십시오.
    handler atfork
  2. 현재 pthread에 대한 모든 등록된 취소 정리 처리기에 관한 정보를 보려면 다음을 입력하십시오.
    handler cancel_cleanup
  3. $t2로 참조되는 pthread 오브젝트에 대한 모든 등록된 취소 정리 처리기에 관한 정보를 보려면 다음을 입력하십시오.
    handler cancel_cleanup 2

help 부속 명령

help [ Subcommand | Topic ]

help 부속 명령은 지정한 매개변수에 따라 dbx 부속 명령 또는 주제에 대한 도움말 정보를 표시합니다. help 부속 명령을 Subcommand 매개변수와 함께 입력하면 지정된 부속 명령에 대한 구문 명령과 설명이 표시됩니다. help 부속 명령을 Topic 매개변수와 함께 입력하면 지정된 주제의 상세한 설명이 표시됩니다. help 부속 명령과 함께 전체 주제 문자열을 제공할 필요가 없습니다. 주제의 처음에서 시작되는 부속 문자열을 제공하면 dbx 프로그램이 해당 주제를 인식할 수 있습니다. 다음 주제가 사용 가능합니다.

항목 설명
startup dbx 시작 옵션을 나열합니다.
execution 프로그램 실행과 관련된 dbx 부속 명령을 나열합니다.
breakpoints 중단점 및 추적과 관련된 dbx 부속 명령을 나열합니다.
files 소스 파일에 액세스하기 위한 dbx 부속 명령을 나열합니다.
data 프로그램 변수와 데이터에 액세스하기 위한 dbx 부속 명령을 나열합니다.
machine 머신-레벨 디버깅을 위한 dbx 부속 명령의 설명을 나열합니다.
environment dbx 구성 및 환경 설정을 위한 dbx 부속 명령을 나열합니다.
threads 스레드 관련 오브젝트에 액세스하기 위한 dbx 부속 명령을 나열합니다.
expressions dbx 표현식 구문과 연산자를 설명합니다.
scope dbx가 유효범위가 다른 이름을 어떻게 해석하는지를 설명합니다.
set_variables 사용법 설명과 함께 dbx 디버그 변수를 나열합니다.
usage 간략한 설명과 함께 일반 dbx 부속 명령을 나열합니다.

  1. 사용 가능한 dbx 부속 명령과 주제를 모두 나열하려면 다음을 입력하십시오.
    help
  2. dbx 하위 명령 목록의 설명을 표시하려면 다음을 입력하십시오.
    help list
  3. dbx topic set_variables의 설명을 표시하려면 다음을 입력하십시오.
    help set_variables

ignore 부속 명령

ignore [ SignalNumber | SignalName ]

ignore 부속 명령은 지정된 신호가 애플리케이션 프로그램으로 전송되기 전에 해당 신호의 트랩을 정지합니다. 이 부속 명령은 디버그되고 있는 애플리케이션 프로그램이 인터럽트 같은 신호를 처리할 때 유용합니다.

트랩될 신호는 다음과 같이 지정할 수 있습니다.

  • SignalNumber 매개변수를 사용한 숫자
  • SignalName 매개변수를 사용한 이름

신호 이름은 대소문자를 구분하지 않습니다. SIG 접두어는 선택사항입니다.

SignalNumberSignalName 매개변수가 지정되는 경우 SIGHUP, SIGCLD, SIGALRMSIGKILL 신호를 제외한 모든 신호는 기본적으로 트랩됩니다. dbx 디버그 프로그램은 디버거 외부의 프로세스에서 생긴 SIGTRAP 신호를 무시할 수 없습니다. 지정된 인수가 없는 경우 현재 무시되는 신호의 목록이 표시됩니다.

dbx가 애플리케이션 프로그램으로 송신된 경고음 시계 제한시간 초과 신호를 무시하도록 하려면 다음을 입력하십시오.

ignore alrm

catch 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅에 있는 신호 처리 를 참조하십시오.

kthread 부속 명령

kthread [ 원시 ] [ info | ru ] [ tid ]

kthread 부속 명령은 커널 스레드에 대한 정보를 표시합니다. raw 옵션을 사용하면 더욱 사람이 읽기 쉬운 형식으로 표시될 수 있는지 여부와 상관없이 모든 출력이 16진으로 표시됩니다. 인수를 사용하지 않으면 모든 커널 스레드에 관한 요약 정보가 인쇄됩니다. 숫자 스레드 ID를 제공하면 dbx 명령이 단일 스레드에 관한 정보를 표시합니다. info 옵션은 사용자 스레드 구조를 통해 스레드에 대한 자세한 출력을 생성합니다. ru 옵션을 사용하면 ti_ru 데이터 멤버가 표시되는데, 여기에는 자원 사용량 정보를 포함합니다.

사용자 스레드에 대한 자세한 정보는 thread subcommand의 내용을 참조하십시오.

  1. 현재 실행 중인 스레드에 관한 정보를 찾으려면 먼저 명령행에 다음을 입력하여 모든 스레드에 관한 정보를 확보해야 합니다.
    kthread
    dbx 명령이 프로세스를 정지하기 직전에 실행 중(또는 실행 가능)이던 스레드는 별표로 표시됩니다. 출력을 기초로 올바른 스레드 ID를 선택하고 다음을 입력하십시오.
    kthread info tid
  2. 모든 스레드에 대한 자원 정보를 16진으로 보려면 다음을 입력하십시오.
    kthread raw ru

limitbp 부속 명령

limitbp ( bp1, 한계 ) [( bp2, [ + ] 한계 ) ...]

limitbp 부속 명령은 dbx 명령에게 중단점이 지정된 횟수만큼 실행되었을 때만 디버그 프로그램 실행을 정지하도록 지시합니다. '+' 문자가 한계 앞에 오는 경우, 해당 이벤트의 한계가 부속 명령에서 지정되는 한계와 이벤트가 이미 실행된 횟수의 합으로 변경됩니다. 즉, limitbp 하위 명령이 이미 실행된 후 지정된 Limit 에 대해 중단점을 실행하려고 할 때 dbx 명령이 디버그 프로그램 실행을 중지합니다.

  1. dbx 명령에 중단점 110번째로 실행될 때 디버그 프로그램 실행을 정지하도록 지시하려면 다음을 입력하십시오.
    limitbp (1, 10)
  2. dbx 명령에 중단점 115번째 실행되거나 중단점 220번째 실행될 때 디버그 프로그램 실행을 정지하도록 지시하려면 다음을 입력하십시오.
    limitbp (1, 15) (2, 20)
  3. 중단점 1limitbp 부속 명령이 실행된 후 20번째로 실행될 때 디버그 프로그램의 실행을 중지하도록 dbx 명령에 지시하려면 다음을 입력하십시오.
    limitbp (1, +20)

list 부속 명령

list [ 프로시저 | SourceLine-Expression [ ,소스줄-표현식 ] | ' at 주소 ]

list 부속 명령은 소스 파일의 지정된 행 수를 표시합니다. 표시되는 행 수는 다음 방법 중 하나로 지정됩니다.

  • Procedure 매개변수를 사용하여 프로시저를 지정하여.

    이 경우, list 부속 명령은 리스트 창이 채워질 때까지 지정된 프로시저가 시작되기 전의 몇 행으로 시작하는 행을 표시합니다.

  • SourceLine-Expression 매개변수를 사용하여 시작 및 종료 소스 행 번호를 지정하여.

    SourceLine-Expression 매개변수는 유효한 행 번호와 그 뒤에 오는 선택적인 +(더하기 부호) 또는 -(빼기 부호)와 정수로 구성됩니다. 또한 $(달러 부호)의 SourceLine을 사용하여 현재 행 번호를 나타낼 수도 있습니다. @(at 기호)의 SourceLine을 사용하면 나열될 다음 행 번호를 표시할 수 있습니다.

  • $listwindow 내부 dbx 변수를 지정하여.

    list 부속 명령을 매개변수 없이 사용하는 경우, $listwindow 변수에 의해 지정되는 행 수가 현재 소스 행에서 시작하여 인쇄됩니다. 디폴트 행 수를 변경하려면 $listwindow 변수를 필요한 행 수로 설정하십시오. $listwindow 변수는 특수 디버그 프로그램 변수입니다. 초기에는 $listwindow 변수가 10으로 설정됩니다.

두 번째 소스 행이 생략되면 첫 번째 행만 인쇄됩니다.

그러면 지정된 첫 번째 행 번호에서부터 지정된 두 번째 행 번호에 이르기까지 모든 행이 표시됩니다.

list 하위 명령에서 at 매개변수 뒤에 주소를 지정하면 list 하위 명령은 지정된 주소에 해당하는 소스 행을 표시합니다. 주소는 10진수나 16진 부호 없는 정수 또는 $iar, $tfiar$tfhar 또는 디버그 변수 같이 레지스터에 해당하는 니모닉으로 지정할 수 있습니다.

  1. 행을 나열하려면1관통10현재 파일에서 다음을 입력하십시오.
    list 1,10
  2. 목록으로10또는$listwindow,main다음을 입력하십시오.
    list main
  3. 현재 행 주위의 11행을 나열하려면, 다음을 입력하십시오.
    list $-5,$+5
  4. SourceLineExpression 표현식에 더하기와 빼기가 포함된 간단한 정수식을 사용할 수 있습니다. 예를 들어 다음과 같습니다.
    (dbx) list $
    4 {
    
    (dbx) list 5
    5 char i = '4';
    
    (dbx) list sub
    23 char *sub(s,a,k)
    24 int a;
    25 enum status k;  .  .  .  
    
    (dbx) move 
    25
    (dbx) list @ -2
    23 char *sub(s,a,k)
  5. 특정 주소에 대응하는 소스 행을 표시할 수 있습니다. 예를 들어 다음과 같습니다.
    (dbx) r
    [1] stopped in main at line 5
        5 int i, sum = 0;
    
    (dbx) list at $iar
    source file: "tt.c"
        5 int i, sum = 0;
        6 int last = 0;
        7
        8 scanf("%d", &last);
        9 
        10 for ( i = 1; i &lt;=last; i++ ) { 
        11 sum += i; 
        12 } 
        13 printf("sum = %d\n", sum); 
        14 
    
    (dbx) list at ($iar+16) 
    source file: "tt.c" 
        8 scanf("%d", &last); 
        9 
        10 for ( i = 1; i <= last; i++ ) { 
        11 sum += i; 
        12 } 
        13 printf("sum = %d\n", sum); 
        14 
        15 return 0; 
        16 }

edit 부속 명령, listi 부속 명령 및 move 부속 명령을 참조하십시오. 현재 파일 표시 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서도 참조하십시오.

listi 부속 명령

listi [ 프로시저 | at SourceLine | 주소 [ , 주소 ]]

listi 부속 명령은 소스 파일에서 지정된 명령어 세트를 표시합니다. 표시되는 명령어는 다음과 같이 지정됩니다.

  • Procedure 매개변수를 제공합니다. 여기서 listi 부속 명령은 목록 창이 채워질 때까지 지정된 프로시저의 시작부터 지시사항을 나열합니다.
  • at SourceLine 플래그를 사용합니다. 여기서 listi 부속 명령은 지정된 소스 행에서 시작하여 리스트 창이 채워질 때까지 계속되는 명령어를 표시합니다. SourceLine 변수는 정수 또는 :(콜론) 및 정수가 뒤에 붙는 파일 이름 문자열로 지정할 수 있습니다.
  • Address 매개변수를 사용하여 시작 및 종료 주소를 지정하면 두 주소를 포함하여 그 사이의 모든 명령이 표시됩니다.

listi 부속 명령을 플래그나 매개변수 없이 사용하면 다음 $listwindow 명령어가 표시됩니다. 리스트 창의 현재 크기를 변경하려면, set $listwindow=Value 부속 명령을 사용하십시오.

역어셈블 모드

' dbx ' 프로그램은 POWER® 제품군 또는 PowerPC® 아키텍처에 대한 지침을 분해할 수 있습니다. 디폴트 모드에서는 dbx 프로그램이 실행 중인 아키텍처에 대한 명령어를 표시합니다.

dbx 명령에 대한 set 부속 명령의 $instructionset$mnemonics 변수를 사용하면 디폴트 디스어셈블리 모드를 대체할 수 있습니다. 자세한 정보는 dbx 명령의 set 부속 명령을 참조하십시오.

플래그 지정

항목 설명
at SourceLine 나열하기 위해 시작 소스 행을 지정합니다.

  1. 다음 10개를 나열하려면 다음을 수행하십시오. 또는$listwindow, 지시사항, 다음을 입력하십시오.
    listi
  2. 소스 행에서 시작하는 기계 명령어를 나열하려면 다음을 수행하십시오.10, 다음을 입력하십시오.
    listi at 10
  3. 소스 행에서 시작하는 기계 명령어를 나열하려면 다음을 수행하십시오.5파일에서sample.c, 다음을 입력하십시오.
    listi at "sample.c":5
  4. 주소 사이의 지시사항을 나열하려면 다음을 수행하십시오.0x100004000x10000420, 다음을 입력하십시오.
    listi 0x10000400, 0x10000420

list 부속 명령 및 set 부속 명령을 참조하십시오. dbx를 사용하여 시스템 레벨에서 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서도 참조하십시오.

malloc 부속 명령

malloc [> 파일 ]

옵션이 없는 malloc 부속 명령은 프로세스가 시작한 이후의 malloc 사용 통계 요약과 사용 가능하게 된 옵션 및 할당 정책 리스트를 인쇄합니다.

malloc [ 할당 [{ address | size | heap | pid | tid | time } { "<" | "==" | ">" "!=" | “~=” ]} ]] [> 파일 ]

malloc 부속 명령에 대한 allocation 옵션은 프로세스가 현재 보유하고 있는 모든 할당의 정렬된 리스트를 표시합니다. 선택적 attribute RELOP value 인수를 사용하면 활성 할당을 더욱 좁혀서 선택할 수 있습니다.

malloc [ 여유 공간 [{ 주소 | 크기 | } { "<" | "==" | ">" | "!=" | “~=”]} ]] [> 파일 ]

malloc 하위 명령의 freespace 옵션은 프로세스 힙에서 사용 가능한 모든 여유 공간의 정렬된 목록을 표시합니다. 선택적 attribute RELOP value 인수를 사용하면 사용 가능 공간 노드 선택 범위가 좁혀집니다.

주: ~= 연산자는 주소 옵션과 함께만 사용할 수 있습니다. 이 연산자는 지정된 주소가 속하는 사용 가능 공간 또는 할당 노드를 페치하는 데 사용됩니다.

malloc 주소

주소를 갖는 malloc 부속 명령은 주소의 노드 세부사항을 표시하며, 주소는 할당된 또는 사용 가능 노드의 시작 주소일 필요가 없습니다.

플래그

항목 설명
> 파일 출력을 지정된 파일로 방향 재지정합니다.

자세한 정보는 일반 프로그래밍 개념: 프로그램 작성 및 디버깅malloc 서브시스템을 사용하여 시스템 메모리 할당 을 참조하십시오.

map 부속 명령

map {[Format] [ entry ModuleNumber [, ModuleNumber ] | Address | SymbolName ] [for $tthreadnumber] [ > File ]}

map 부속 명령은 애플리케이션의 로드된 부분에 대한 특성을 표시합니다. 이 정보에는 로드된 각 모듈의 모듈 이름, 멤버 이름, 텍스트 기점, 텍스트 끝, 텍스트 길이, 데이터 기점, 데이터 끝, 데이터 길이, TLS 데이터 기점, TLS 데이터 끝, TLS 데이터 길이 및 파일 설명자가 포함될 수 있습니다. 표시할 항목은 다음 방식으로 지정할 수 있습니다.
  • ModuleNumber 매개변수를 사용하여 단일 항목을 지정합니다.
  • 두 개의 쉼표로 구분된 ModuleNumber 매개변수를 사용하여 항목의 범위를 지정합니다.
  • Address 매개변수를 사용하여 로드된 모듈로 해석될 주소를 지정합니다.
  • SymbolName 매개변수를 사용하여 로드된 모듈로 해석될 기호 이름을 지정합니다.

위의 스펙을 전혀 사용하지 않고 호출한 경우, map 부속 명령은 애플리케이션의 로드된 모든 부분에 대한 정보를 표시합니다.

Format 인수는 로드된 모듈 설명에 대한 출력 모드를 지정합니다. 다음 리스트에 가능한 Format 인수 값이 있습니다.
항목 설명
생략 축약된 출력 모드를 지정합니다. 이 출력은 로드된 모듈마다 해당 모듈의 항목 번호, 모듈 이름 및 선택적 멤버 이름을 포함하는 단일 행으로 구성됩니다.
정상 정상적인 출력 모드를 지정합니다. 이 출력은 로드된 각 모듈의 이름, 항목 번호, 모듈 이름, 멤버 이름, 텍스트 기점, 텍스트 길이, 데이터 기점, 데이터 길이 및 파일 설명자로 구성됩니다. 로드된 모듈이 TLS 데이터를 갖는 경우, TLS 데이터 기점과 TLS 데이터 길이도 표시됩니다.
raw 원시 출력 모드를 지정합니다. 이 출력은 모듈마다 항목 번호, 선택적 멤버 이름이 같이 있는 모듈 이름, 텍스트 기점, 텍스트 끝, 텍스트 길이, 데이터 기점, 데이터 끝, 데이터 길이 및 파일 설명자 필드들을 공백으로 구분하여 포함하는 형식화되지 않은 단일 행으로 구성됩니다. 로드된 모듈이 TLS 데이터를 갖는 경우 TLS 데이터 기점, TLS 데이터 끝 및 TLS 데이터 길이도 표시됩니다.
상세 상세 출력 모드를 지정합니다. 이 출력은 로드된 각 모듈의 이름, 항목 번호, 모듈 이름, 멤버 이름, 텍스트 기점, 텍스트 끝, 텍스트 길이, 데이터 기점, 데이터 끝, 데이터 길이 및 파일 설명자로 구성됩니다. 로드된 모듈이 TLS 데이터를 갖는 경우 TLS 데이터 기점, TLS 데이터 끝 및 TLS 데이터 길이도 표시됩니다.

Format 매개변수를 지정하지 않으면 dbx 명령은 $mapformat 내부 변수의 값을 사용합니다. Format 매개변수가 지정되지 않고 $mapformat이 설정되지 않은 경우 dbx 명령은 로드된 모듈 정보를 정규 모드로 표시합니다.

로드 모듈에 TLS 데이터가 있으면 지정된 스레드의 TLS 데이터 정보가 표시됩니다. 스레드를 지정하지 않은 경우에는 현재 스레드가 사용됩니다.

플래그

항목 설명
> 파일 출력을 지정된 파일로 방향 재지정합니다.
항목 ModuleNumber [, ModuleNumber ] 표시할 모듈 또는 모듈 범위를 지정합니다.
$t의 경우 스레드 번호 스레드 번호를 지정합니다.

  1. 모든 로드된 모듈을 약어 모드로 나열하려면 다음을 입력하십시오.
    map abbr
  2. 3 - 5 모듈을 상세 모드로 나열하려면 다음을 입력하십시오.
    map verbose entry 3,5
  3. 주소 0x20001000을 포함하는 로드된 모듈을 나열하려면 다음을 입력하십시오.
    map 0x20001000
  4. 변수 example을 포함하는 로드된 모듈을 나열하려면 다음을 입력하십시오.
    map example
  5. 스레드 2에 대한 모듈의 TLS 데이터 정보를 갖는 정규 모드로 로드된 모듈을 나열하려면 다음을 입력하십시오.
    map normal for $t2

자세한 정보는 $mapformat 내부 변수를 참조하십시오. dbx를 사용하여 시스템 레벨에서 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서도 참조하십시오.

move 부속 명령

move SourceLine

move 부속 명령은 표시될 다음 행을 SourceLine 매개변수로 지정되는 행으로 변경합니다. 이 부속 명령은 @(at 기호) 변수의 값을 변경합니다.

SourceLine 변수는 정수 또는 :(콜론) 및 정수가 뒤에 붙는 파일 이름 문자열로 지정할 수 있습니다.

  1. 나열할 다음 행을 행으로 변경하려면 다음을 수행하십시오.12, 다음을 입력하십시오.
    move 12
  2. 나열할 다음 행을 행으로 변경하려면 다음을 수행하십시오.5파일에서sample.c, 다음을 입력하십시오.
    move "sample.c":5

list 부속 명령을 참조하십시오. 또한 현재 파일 표시 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서를 참조하십시오.

multproc 부속 명령

multproc [ on | 상위| 하위 (child)| 해제 ]

multproc 부속 명령은 분기 실행 및 초과 프로세스가 작성될 때 dbx 디버그 프로그램의 작동을 지정합니다. on 플래그는 분기 실행의 하위 경로를 디버그하기 위해 새 dbx 세션이 작성되도록 지정하는 데 사용됩니다. 원래 dbx는 상위 경로를 계속 디버그합니다. parentchild 플래그는 뒤따를 분기 실행의 단일 경로를 지정하는 데 사용됩니다. off를 제외한 모든 플래그는 dbx가 초과 프로세스를 따를 수 있게 합니다. off 플래그는 멀티프로세스 디버깅을 사용 불가능하게 합니다. 플래그가 지정되지 않는 경우 multproc 부속 명령은 멀티프로세스 디버깅의 상태를 리턴합니다.

dbx 프로그램은 멀티프로세스 디버깅을 위해 X 윈도우 시스템을 사용합니다. dbx 프로그램은 멀티프로세싱에 필요한 만큼의 창을 엽니다. 각 하위 창의 제목은 하위 프로세스의 프로세스 ID(pid)입니다. 프로세스 사이에서 전환하려면 X 윈도우 시스템 처리 기술을 사용하여 dbx 명령 세션이 표시되는 창을 활성화하십시오. 시스템에 X 윈도우 시스템 지원이 없는 경우, 디버거가 분기 실행할 때 경고 메시지가 표시되며 dbx 프로그램은 계속해서 상위 프로세스만 디버그합니다. 멀티프로세스 디버깅은 또한 다음 이유로 실패할 수 있습니다.

  • dbx 프로그램이 X 윈도우 시스템 환경에서 실행 중이 아닙니다.
  • X Window 시스템이 실행 중이지만 dbx 글로벌 $xdisplay 변수가 올바른 표시 이름으로 설정되지 않았습니다. $xdisplay 변수는 쉘 DISPLAY 환경 변수로 초기화됩니다. set Name=Expression dbx 부속 명령을 사용하여 표시 이름의 값을 변경할 수 있습니다.
  • /tmp 디렉토리가 디버깅 프로그램에 대한 읽기 또는 쓰기 액세스를 허용하지 않습니다. dbx 프로그램은 X 윈도우 환경을 제어할 때 이 디렉토리의 작은 양의 공간이 필요합니다.
  • 시스템에 새 X 윈도우를 수용하기에 충분한 자원이 없습니다.

$xdisplay가 원격 표시장치로 설정되는 경우 사용자는 새로 작성된 X 윈도우를 보지 못할 수 있습니다. $xdisplay 설정이 올바르지 않은 경우 X 윈도우 시스템 또는 기타 시스템 자원이 실패 원인을 보고합니다.

dbx 프로그램은 서로 다른 장애 유형을 구별하지 못하지만, 부속 명령이 실패했을 때 다음과 같은 메시지를 수신합니다.

Warning: dbx subcommand multiproc fails. dbx 
continued with multproc disabled.

새로 작성되는 창을 사용자 정의로 구성하려면 .Xdefaults 파일에 있는 dbx_term 애플리케이션 이름으로 정의할 수 있습니다.

플래그

항목 설명
켜기 멀티프로세스 디버깅이 가능합니다.
끄기 멀티프로세스 디버깅이 불가능합니다.

  1. 멀티프로세스 디버깅의 상태를 검사하려면 다음을 입력하십시오.
    multproc
  2. 멀티프로세스 디버깅을 사용 가능하게 하려면 다음을 입력하십시오.
    multproc on
  3. 멀티프로세스 디버깅을 사용 안함으로 설정하려면 다음을 입력하십시오.
    multproc off 

screen 부속 명령 및 fork 서브루틴을 참조하십시오. 또한 다중 프로세스를 포함하는 프로그램 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서을 참조하십시오.

mutex 부속 명령

mutex [ lock | unlock | thnum | utid | MutexNumber ...]

mutex 부속 명령은 mutex에 대한 정보를 표시합니다. MutexNumber 매개변수가 제공되면, mutex 부속 명령은 지정된 mutex에 대한 정보를 표시합니다. 플래그나 매개변수를 지정하지 않으면, mutex 부속 명령은 모든 mutex에 대한 정보를 표시합니다.

각 mutex에 대해 나열되는 정보는 다음과 같습니다.

항목 설명
mutex 뮤텍스의 기호 이름을 표시합니다. 양식은 다음과 같습니다.$mMutexNumber.
type 뮤텍스의 유형을 표시합니다.non-rec(반복되지 않음),recursi(반복) 또는fast.
obj_addr mutex의 메모리 주소를 나타냅니다.
lock mutex의 잠금 상태를 표시합니다.yesmutex가 잠겨 있는 경우,no없는 경우.
owner mutex가 잠금 상태인 경우에 mutex를 보유하는 사용자 스레드의 기호 이름을 나타냅니다.
blockers 이 mutex 변수에서 차단되는 사용자 스레드를 나열합니다.
참고: dbx 디버그 프로그램의 print 하위 명령은 기호 뮤텍스 이름을 인식하며 해당 오브젝트의 상태를 표시하는 데 사용할 수 있습니다.

플래그

항목 설명
잠금 잠금 상태인 mutex에 관한 정보를 표시합니다.
잠금 해제 잠금 상태가 아닌 mutex에 관한 정보를 표시합니다.
스넘 (thnum) 특정 스레드가 보유하는 모든 mutex에 대한 정보를 표시합니다.
유틸리티 해당 사용자 스레드 ID가 사용자 스레드 ID와 일치하는 사용자 스레드가 보유하는 모든 mutex에 관한 정보를 표시합니다.

  1. 모든 mutex에 관한 정보를 표시하려면 다음을 입력하십시오.
    mutex
  2. 모든 잠긴 mutex에 관한 정보를 표시하려면 다음을 입력하십시오.
    mutex  lock
  3. mutex 번호 4, 5 및 6에 관한 정보를 표시하려면 다음을 입력하십시오.
    mutex 4 5 6
    출력은 다음과 유사합니다.
    mutex   obj_addr         type     lock owner  blockers
    $m4    0x20003274        non-rec   no
    $m5    0x20003280        recursi   no
    $m6    0x2000328a        fast      no
  4. 스레드 1이 보유하는 모든 mutex에 대한 정보를 표시하려면 다음을 입력하십시오.
    mutex thnum 1
  5. 사용자 스레드 ID가 0x0001인 스레드가 보유하는 모든 mutex에 대한 정보를 표시하려면 다음을 입력하십시오.
    mutex utid 0x0001

attribute 부속 명령, condition 부속 명령, print 부속 명령 및 thread 부속 명령을 참조하십시오.

또한, Mutexes 사용 일반 프로그래밍 개념: 프로그램 작성 및 디버깅.

next 부속 명령

next [ Number ]

next 부속 명령은 다음 소스 행까지 애플리케이션 프로그램을 실행합니다. Number 매개변수는 next 부속 명령이 실행하는 횟수를 지정합니다. Number 매개변수가 지정되지 않는 경우 next는 한 번만 실행합니다.

멀티스레드 애플리케이션 프로그램에서 next 부속 명령을 사용하면, 모든 사용자 스레드는 조작 중에 실행되지만 프로그램은 실행 중인 스레드가 지정된 소스 행에 도달할 때까지 계속 실행됩니다. 실행 중인 스레드만 진행하려는 경우 set 부속 명령을 사용하여 $hold_next 변수를 설정하십시오. 이 변수를 설정하면 실행 중인 스레드가 차단된 스레드 중 하나가 보유하는 잠금을 기다릴 수 있으므로 교착 상태에 빠질 수 있습니다.

  1. 다음 소스 행까지 실행을 계속하려면 다음을 입력하십시오.
    next
  2. 현재 소스 행 뒤에서 세 번째 소스 행까지 실행을 계속하려면 다음을 입력하십시오.
    next 3

cont 부속 명령, goto 부속 명령, nexti 부속 명령, set 부속 명령 및 step 부속 명령을 참조하십시오.

nexti 부속 명령

nexti [ Number ]

nexti 부속 명령은 다음 명령어까지 애플리케이션 프로그램을 실행합니다. Number 매개변수는 nexti 부속 명령이 실행하는 횟수를 지정합니다. Number 매개변수가 지정되지 않는 경우 nexti는 한 번만 실행합니다.

멀티스레드 애플리케이션 프로그램에서 nexti 부속 명령을 사용하면, 모든 사용자 스레드는 조작 중에 실행되지만 프로그램은 실행 중인 스레드가 지정된 소스 행에 도달할 때까지 계속 실행됩니다. 실행 중인 스레드만 진행하려는 경우 set 부속 명령을 사용하여 $hold_next 변수를 설정하십시오. 이 변수를 설정하면 실행 중인 스레드가 차단된 스레드 중 하나가 보유하는 잠금을 기다릴 수 있으므로 교착 상태에 빠질 수 있습니다.

  1. 다음 기계 명령어까지 실행을 계속하려면 다음을 입력하십시오.
    nexti
  2. 현재 기계 명령어 뒤에 오는 세 번째 기계 명령어까지 실행을 계속하려면 다음을 입력하십시오.
    nexti 3

gotoi 부속 명령, next 부속 명령, set 부속 명령 및 stepi 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅에 있는 기계 레벨에서 프로그램 실행 을 참조하십시오.

onceblock 부속 명령

onceblock [ uninit | 완료 ]

onceblock 부속 명령은 pthread_once 루틴을 사용하여 등록된 초기화 코드의 블록에 관한 정보를 표시합니다. 인수가 없으면 모든 등록된 1회 블록에 대한 정보가 표시됩니다. 선택적 uninitdone 플래그는 각각 실행되지 않았거나 이미 실행된 1회 블록만 표시하지만, 숫자로 된 1회 ID를 제공하면 단일 1회 블록에 대한 정보를 표시합니다.

참고: 라이브 프로세스를 디버깅하는 동안 onceblock 하위 명령이 작동하려면 환경 변수 AIXTHREAD_ONCE_DEBUG가 ON와 동일하게 설정되어야 합니다. 마찬가지로, 코어 파일을 디버깅하는 경우 프로세스가 실행할 때 변수가 on이 아니면 onceblock 부속 명령은 어떤 정보도 획득할 수 없습니다.

  1. 임의의 1회 블록이 아직 실행되지 않았는지 파악하려면 다음을 입력하십시오.
    onceblock uninit

plugin 부속 명령

plugin [ 이름 [ 명령 ]]

plugin 부속 명령은 Command 매개변수에 의해 지정되는 명령을 Name 매개변수로 지정되는 플러그인으로 전달합니다. 매개변수가 지정되지 않으면 사용 가능한 모든 플러그인의 이름이 표시됩니다.

  1. 사용 가능한 모든 플러그인을 나열하려면 다음을 입력하십시오.
    plugin
  2. "sample"이라는 플러그인의 "help" 부속 명령을 시작하려면 다음을 입력하십시오.
    plugin sample help
  3. "xyz"라는 플러그인의 "interpret 0x20000688" 부속 명령을 시작하려면 다음을 입력하십시오.
    plugin xyz interpret 0x20000688

pluginload 부속 명령 및 pluginunload 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념dbx 플러그인 프레임워크 개발 을 참조하십시오.

pluginload 부속 명령

pluginload 파일

pluginload 부속 명령은 File 매개변수로 지정된 플러그인을 로드합니다. File 매개변수는 플러그인에 대한 경로를 지정해야 합니다.
참고: 기본 dbx 명령은 64비트프로세스이므로 32비트플러그인을 로드하려면 dbx32라는 dbx 명령의 32비트버전을 사용해야 합니다.

"sample" 플러그인을 "/home/user/dbx_plugins/libdbx_sample.so"에 로드하려면 다음을 입력하십시오.
pluginload /home/user/dbx_plugins/libdbx_sample.so

plugin 부속 명령 및 pluginunload 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념dbx 플러그인 프레임워크 개발 을 참조하십시오.

pluginunload 부속 명령

pluginunload 이름

pluginunload 부속 명령은 Name 매개변수로 지정된 플러그인을 로드 해제합니다.

"sample"이라는 플러그인을 로드 해제하려면 다음을 입력하십시오.
pluginunload sample

plugin 부속 명령 및 pluginload 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념dbx 플러그인 프레임워크 개발 을 참조하십시오.

print 부속 명령

print 표현식 ...

print 프로시저 ([ 매개변수 ])

print 부속 명령은 다음 조작 중 하나를 수행합니다.

  • Expression 매개변수로 지정되는 표현식 리스트의 값을 인쇄합니다.
  • Procedure 매개변수로 지정되는 프로시저를 실행하고 해당 프로시저의 리턴 값을 인쇄합니다. 포함되는 매개변수가 프로시저로 전달됩니다.

  1. 다음 값을 표시하려면x및 값y왼쪽으로 2비트이동한 경우 다음을 입력하십시오.
    print x, y << 2
  2. 다음을 호출하여 리턴된 값을 표시하려면sbrk인수가 0인 루틴의 경우 다음을 입력하십시오.
    print sbrk(0)

assign 부속 명령, call 부속 명령 및 set 부속 명령을 참조하십시오.

printbp 부속 명령

printbp [ bp1 ] [ bp2 ] ... | 모두

printbp 부속 명령은 dbx 명령에게 각 중단점이나 모든 부속 명령이 실행된 횟수 및 한계가 설정된 경우 중단점에 대한 한계의 세부사항을 인쇄하도록 지시합니다.

  1. dbx 명령에게 중단점 1이 실행된 횟수 및 설정된 한계의 세부사항을 인쇄하도록 지시하려면 다음을 입력하십시오.
    printbp 1
  2. dbx 명령에게 중단점 12가 실행되는 횟수를 인쇄하고 중단점 12에 한계가 설정된 경우 실행할 수 있는 횟수를 제한하도록 지시하려면 다음을 입력하십시오.
    printbp 1, 2
  3. dbx 명령에 모든 중단점이 실행되는 횟수 및 적용 가능한 경우 임의의 중단점에 대한 한계의 세부사항을 인쇄하도록 지시하려면 다음을 입력하십시오.
    printbp all

proc 부속 명령

proc [ raw ] [ cred | cru | ru | sigflags | 신호 ]

proc 부속 명령은 프로세스에 대한 정보를 표시합니다. raw 옵션을 사용하면 사용자가 읽기 쉬운 형식의 값을 해석하기 보다는 출력이 16진으로 표시됩니다. 추가 인수 없이 proc 부속 명령을 사용하면 사용자 프로세스 데이터 구조에 저장된 대로 프로세스에 대한 일반 정보를 출력합니다. cred 옵션은 프로세스 신임 정보를 설명하는 pi_cred 데이터 멤버의 내용을 표시합니다. cruru 옵션은 각각 자원 사용 정보를 포함하는 데이터 멤버 pi_crupi_ru를 표시합니다. sigflagssignal 옵션은 pi_sigflagspi_signal 데이터 멤버에 포함된 대로 현재 신호 상태 및 등록된 신호 처리기에 관련된 정보를 표시합니다.

  1. 현재 프로세스(또는 코어 파일)에 대한 자원 사용 정보를 원시 16진으로 보려면 다음을 입력하십시오.
    proc raw ru
  2. 신호 처리기 정보를 보려면 다음을 입력하십시오.
    proc signal

prompt 부속 명령

prompt [ "String" ]

prompt 부속 명령은 dbx 명령 프롬프트를 String 매개변수가 지정한 문자열로 변경합니다.

프롬프트를 dbx>로 변경하려면 다음을 입력하십시오.

prompt "dbx>"

일반 프로그래밍 개념: 프로그램 작성 및 디버깅에 있는 새 dbx 프롬프트 정의 를 참조하십시오.

quit 부속 명령

quit

quit 하위 명령은 dbx 디버깅 세션에서 실행 중인 모든 프로세스를 종료합니다.

detach 부속 명령을 참조하십시오.

registers 부속 명령

registers [ALL | $t스레드 번호 ...] [ >파일 ]

registers 부속 명령은 범용 레지스터, 시스템 제어 레지스터, 부동 소수점 레지스터, 벡터 레지스터 및 현재 명령어 레지스터의 값을 표시합니다.

  • 범용 레지스터는 $rNumber 변수로 표시되는데, Number 매개변수는 레지스터의 번호를 표시합니다.

    참고: 레지스터 값은 0xdeadbeef 16진 값으로 설정될 수 있습니다. 0xdeadbeef 16진 값은 프로세스 초기화 시에 범용 레지스터에 지정되는 초기화 값입니다.

  • 부동 소수점 레지스터는 $frNumber 변수로 표시됩니다. 기본적으로 부동 소수점 레지스터는 표시되지 않습니다. 부동 소수점 레지스터를 표시하려면 unset $noflregs dbx 부속 명령을 사용하십시오.
  • 벡터 레지스터는 $vrNumber 변수로 표시됩니다. $novregs 내부 변수는 벡터 레지스터가 표시되는지 여부를 제어합니다. $novregs 변수는 기본적으로 설정되며 벡터 레지스터는 표시되지 않습니다. $novregs 가 설정되지 않고 벡터 레지스터가 유효한 경우 (벡터 가능 프로세서에서 프로그램 디버깅 또는 벡터 레지스터 상태를 포함하는 코어 파일 분석) 모든 벡터 레지스터가 표시됩니다 (vr0–vr31, vrsave, vscr). 벡터 레지스터는 유형으로 참조할 수도 있습니다. 예를 들어, $vrNf (float), $vrNs (short) 및 $vrNc (char) 벡터 레지스터 변수를 printassign 부속 명령과 함께 사용하여 벡터 레지스터를 유형별로 표시하고 설정할 수 있습니다.
  • 벡터 스칼라 레지스터는 $vsrNumber 변수로 표시됩니다. 기본적으로 벡터 스칼라 레지스터는 표시되지 않습니다. 벡터 스칼라 레지스터가 올바를 때마다(벡터 스칼라 가능 프로세서에서 프로그램을 디버깅하거나 벡터 스칼라 레지스터 상태를 포함하는 코어 파일을 분석하는 경우) 벡터 스칼라 레지스터를 표시하려면 $novsregs 변수를 설정 해제하십시오. 벡터 스칼라 레지스터는 레거시 부동 소수점 레지스터 및 벡터 레지스터의 수퍼세트이므로, 디버그 변수 $novsregs는 설정 해제될 때 벡터 스칼라 레지스터 상태가 올바른 경우 항상 $noflregs$novsregs보다 우선권을 갖습니다. registers 부속 명령은 중괄호 안에 레거시 레지스터 별명과 함께 벡터 스칼라 레지스터를 표시합니다. 부동 소수점 레지스터 별명은 낮은 64-비트에만 대응합니다. 벡터 스칼라 레지스터는 또한 벡터 레지스터와 유사하게 유형으로 참조할 수도 있습니다. 예를 들어 $vsrNf(float), $vsrNs(short), $vsrNc (char), $vsrNg(double) 및 $vsrNll(long long) 벡터 스칼라 레지스터 변수를 print 및 assign 부속 명령과 함께 사용하여 벡터 스칼라 레지스터를 유형별로 표시하고 설정할 수 있습니다.
  • 멀티스레드 환경에서 ALL 옵션은 모든 사용 가능한 스레드에 대한 레지스터 세부사항을 표시합니다. 개별 스레드의 레지스터 세부사항은 registers 부속 명령과 함께 스레드 번호를 지정하여 표시됩니다. registers 부속 명령을 옵션 없이 사용하면 현재 스레드에 대한 레지스터가 표시됩니다.
주: 현재 스레드가 커널 모드에 있는 경우 registers 부속 명령은 레지스터를 표시할 수 없습니다.

플래그 지정

항목 설명
>파일 출력을 지정된 파일로 방향 재지정합니다.

set 부속 명령 및 unset 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅에 있는 기계 레지스터 사용 을 참조하십시오.

스레드 $t1, $t2 및 $t3의 레지스터 세부사항을 표시하려면 다음을 입력하십시오.
registers $t1 $t2 $t3

set 부속 명령 및 unset 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅에 있는 기계 레지스터 사용 을 참조하십시오.

rerun 부속 명령

rerun [ 인수 ] [ < File ] [ > File ] [ > > File ] [ 2 > File ] [ 2 > > File ] [ > & File ] [ > > & File ]

rerun 부속 명령은 오브젝트 파일의 실행을 시작합니다. Arguments가 명령행 인수로 전달됩니다. Arguments 매개변수가 지정되지 않는 경우 마지막 run 또는 rerun 부속 명령의 인수가 재사용됩니다.

플래그

항목 설명
<파일 입력이 File로부터 수신되도록 입력을 방향 재지정합니다.
>파일 출력을 File로 방향 재지정합니다.
> >파일 방향 재지정된 출력을 File에 첨가합니다.
2 >파일 표준 오류를 File로 방향 재지정합니다.
2 > >파일 방향 재지정한 표준 오류를 File에 첨가합니다.
> &파일 표준 오류 및 출력을 File로 방향 재지정합니다.
> > &파일 출력 및 표준 오류를 File에 추가합니다.

run 부속 명령을 참조하십시오.

resource 부속 명령

resource { owner | waiter } [ all | pthread id ]

resource 부속 명령은 현재 보유하고 있거나 대기 중인 자원 pthread에 대한 정보를 표시합니다. 첫 번째 인수(필수)는 자원을 소유하거나 자원을 대기 중인 pthread를 보는 데 관심이 있는지 여부를 표시합니다. 두 번째 인수는 모든 pthread, 아니면 특정 pthread를 표시하기 위해 사용할 수 있습니다. 전혀 지정하지 않으면, 현재 pthread에 관련된 정보만 표시됩니다(적용 가능할 경우).

참고: resource 하위 명령은 ON로 설정된 여러 디버깅 환경 변수를 사용하여 실행되는 디버깅 프로세스에만 유용합니다. 여기에는 AIXTHREAD_MUTEX_DEBUG, AIXTHREAD_COND_DEBUG, AIXTHREAD_RWLOCK_DEBUG, AIXTHREAD_READ_OWNER 및 AIXTHREAD_WAITLIST_DEBUG가 포함됩니다. 라이브 프로세스를 디버그하는 중에 이들 변수가 켜지지 않거나 디버거 코어 파일이 생성될 때 켜지지 않은 경우 resource 부속 명령은 더 적은 정보를 검색하거나 전혀 검색하지 않을 수 있습니다. 이들 기능의 사용은 성능을 저하시킬 수 있으므로, 디버깅 목적으로만 활성화할 것을 권장합니다.

  1. 현재 pthread가 자원을 보유하는지 확인하려면 다음을 입력하십시오.
    resource owner
  2. pthread가 대기 중인 자원을 보려면 다음을 입력하십시오.
    resource waiter all

return 부속 명령

return [ Procedure ]

return 부속 명령은 Procedure 매개변수에 지정된 프로시저로 리턴될 때까지 애플리케이션 프로그램을 실행합니다. Procedure 매개변수를 지정하지 않으면, 현재 프로시저가 리턴할 때 실행이 중단됩니다.

  1. 호출 루틴에 대한 실행을 계속하려면 다음을 입력하십시오.
    return
  2. 실행을 계속하려면 다음을 수행하십시오.main다음을 입력하십시오.
    return main 

rwlock 부속 명령

rwlock [읽기 |쓰기 | RwlockNumber....]

rwlock 부속 명령은 rwlocks에 대한 정보를 표시합니다. RwlockNumber 매개변수가 제공되는 경우 rwlock 부속 명령은 지정된 rwlock에 관한 정보를 표시합니다. 플래그가 매개변수가 지정되지 않는 경우 rwlock 부속 명령은 모든 rwlock에 관한 정보를 표시합니다.

rwlock에 대한 정보는 다음과 같습니다.

항목 설명
rwl rwlock의 기호 이름을 $rw RwlockNumber 양식으로 표시합니다.
flag_value 플래그 값을 표시합니다.
owner rwlock의 소유자를 나타냅니다.
status rwlock을 보류하고 있는 사용자를 나타냅니다. 값은 읽기(판독기에 의해 보류된 경우), 쓰기(작성자에 의해 보류된 경우), 사용 가능(사용 가능한 경우)입니다.
wsleep[#] 쓰기에서 스레드 블로킹을 표시합니다. # 쓰기에서 블로킹하는 총 스레드 수를 표시합니다.
rsleep[#] 읽기를 차단하는 스레드를 표시합니다. # 읽기에서 블로킹된 총 스레드 수를 표시합니다.
주: dbx 디버그 프로그램의 print 부속 명령은 기호 rwlock 이름을 인식하며 해당 오브젝트의 상태를 표시하는 데 사용할 수 있습니다.

플래그

항목 설명
read 상태가 읽기 모드에 있는 모든 rwlock에 대한 정보를 표시합니다.
쓰기 상태가 쓰기 모드에 있는 모든 rwlock에 대한 정보를 표시합니다.

  1. 모든 rwlock에 대한 정보를 표시하려면 다음을 입력하십시오.
    rwlock

    출력은 다음과 유사합니다.

    rwl     flag_value    owner status
    $rwl        1         $t1    write
            rsleeps[     0]:
            wsleeps[     0]:
  2. 쓰기 모드에 있는 모든 rwlock에 대한 정보를 표시하려면 다음을 입력하십시오.
    rwlock write

    출력은 다음과 유사합니다.

    rwl     flag_value    owner status
    $rwl        1         $t1    write
            rsleeps[     0]:
            wsleeps[     0]:

attribute 부속 명령, condition 부속 명령, mutex 부속 명령, print 부속 명령 및 thread 부속 명령을 참조하십시오.

run 부속 명령

run [ 인수 ] [ <File ] [ >File ] [ > >File ] [ 2 >File ] [ 2 > >File ] [ > &File ] [ > > &File ]

run 부속 명령은 오브젝트 파일을 시작합니다. Arguments가 명령행 인수로 전달됩니다.

플래그

항목 설명
<파일 입력이 File로부터 수신되도록 입력을 방향 재지정합니다.
>파일 출력을 File로 방향 재지정합니다.
2 >파일 표준 오류를 File로 방향 재지정합니다.
> >파일 방향 재지정된 출력을 File에 첨가합니다.
2 > >파일 방향 재지정한 표준 오류를 File에 첨가합니다.
> &파일 표준 오류 및 출력을 File로 방향 재지정합니다.
> > &파일 출력 및 표준 오류를 File에 추가합니다.

인수를 사용하여 애플리케이션 실행blue12, 다음을 입력하십시오.

run blue 12

rerun 부속 명령을 참조하십시오.

screen 부속 명령

screen

screen 부속 명령은 dbx 명령 상호작용을 위한 X 윈도우를 엽니다. 사용자는 프로세스가 시작된 창에서 작업을 계속합니다.

screen 부속 명령은 dbx 디버그 프로그램이 X 윈도우 시스템 환경에서 실행 중인 동안 실행되어야 합니다. screen 부속 명령이 비 X 윈도우 환경에서 실행되는 경우 dbx 프로그램은 경고 메시지를 표시하고 screen 부속 명령이 제공되지 않은 것처럼 디버깅을 재개합니다. screen 부속 명령은 다음과 같은 상황에서는 실행되지 않을 수 있습니다.

  • dbx 프로그램이 X 윈도우 시스템 환경에서 실행 중이 아닙니다.
  • X 윈도우 시스템이 실행 중이지만 dbx 글로벌 $xdisplay 변수가 유효한 표시 이름으로 설정되지 않았습니다. $xdisplay 변수는 DISPLAY 환경 변수로 초기화됩니다. dbx 부속 명령 set Name=Expression은 표시 이름의 값을 변경합니다.
  • X 윈도우 시스템이 실행 중이지만, TERM 환경 변수가 새 창을 시작하기 위한 올바른 명령 이름으로 설정되지 않았습니다.
  • /tmp 디렉토리가 프로그램에 대한 읽기 또는 쓰기 액세스를 허용하지 않습니다. dbx 프로그램은 screen 명령이 실행될 때 이 디렉토리에서 작은 양의 공간이 필요합니다.
  • 시스템에 새 X 윈도우를 수용하기에 충분한 자원이 없습니다.

dbx 프로그램은 서로 다른 장애 유형을 구별하지 못하지만, 다음과 같은 메시지를 송신합니다.

Warning: dbx subcommand screen fails. dbx 
continues.

$xdisplay가 원격 표시장치로 설정된 경우 새로 작성된 X 윈도우를 보지 못할 수 있습니다. $xdisplay 설정이 올바르지 않은 경우 X 윈도우 시스템 또는 기타 시스템 자원이 문제점을 보고합니다.

새로 작성되는 창을 사용자 정의로 구성하려면 .Xdefaults 파일에 있는 dbx_term 애플리케이션 이름으로 정의할 수 있습니다.

dbx 명령 상호작용을 위한 X 윈도우를 열려면 다음을 입력하십시오.

screen

set 부속 명령

set [ 변수=표현식 ]

set 부속 명령은 dbx 디버그 프로그램 변수의 값을 정의합니다. 값은 Expression 매개변수에 의해 지정되고 프로그램 변수는 Variable 매개변수에 의해 지정됩니다. 변수의 이름이 디버깅되는 프로그램의 이름과 충돌하지 않아야 합니다. 변수는 다른 명령 내에서 대응하는 표현식으로 확장됩니다. set 부속 명령이 인수 없이 사용되는 경우 현재 설정된 변수가 표시됩니다.

변수 설명
$catchbp 다음 명령이 실행되는 동안 중단점을 찾아냅니다.
$코드 페이지 프로그램 내에서 문자 해석에 사용할 코드 세트를 지정합니다. 올바른 코드 페이지와 함께 지정될 때 모든 문자는 지정된 코드 세트에서 읽고 현재 환경이 사용 중인 코드 세트로 변환됩니다.
$compact_bt_ident 스택 추적에서 인쇄할 수 있는 ID 이름에 있는 문자 수에 대한 한계를 지정합니다. 지정된 한계는 4 - 128 범위의 양의 정수여야 합니다. 이 변수가 어떤 한계 값도 지정하지 않고 설정되는 경우, 인쇄할 수 있는 디폴트 문자 수는 8입니다.

변수가 설정되고 ID 이름이 지정된 한계보다 4자이상 긴 경우, dbx 명령은 스택 추적에서 원래 ID 이름의 지정된 문자 수와 그 뒤에 3개의 마침표 (...) 를 인쇄합니다.

예를 들어 ID 이름이 길이가 16문자인 variable_example이고 지정된 한계가 7인 경우 ID 이름은 variabl...로 인쇄됩니다. 그러나 ID 이름이 10자 길이인 variable_1이고 지정된 한계가 7인 경우 dbx 명령은 ID 이름을 7문자와 세 개의 마침표로 축약하지 않습니다. variable_1으로 인쇄됩니다.

$compact_bt_문자열 스택 추적에서 인쇄될 수 있는 함수 인자 문자열의 문자 수에 대한 한계를 지정합니다. 지정된 한계는 4 - 128 범위의 양의 정수여야 합니다. 이 변수가 어떤 한계 값도 지정하지 않고 설정되는 경우, 인쇄할 수 있는 디폴트 문자 수는 8입니다.

변수가 설정되고 문자열의 길이가 지정된 한계보다 4자이상 긴 경우, dbx 명령은 스택 추적에서 원래 문자열의 지정된 문자 수와 그 뒤에 3개의 마침표 (...) 를 인쇄합니다.

예를 들어 문자열이 14자 길이인 string_example이고 지정된 한계가 5인 경우 문자열은 strin...으로 인쇄됩니다. 그러나 문자열이 8자 길이인 string_1이고 지정된 한계가 5인 경우 dbx 명령은 문자열을 5문자와 세 개의 마침표로 축약하지 않습니다. string_1으로 인쇄됩니다.

$revents 지연된 이벤트 기능을 켭니다.
$display_address_name ($display_address_name) 멤버 변수 ID 및 dbx 명령을 사용 중인 메모리 주소 세트를 시험할 때 해당 ID가 채우는 메모리 주소를 표시합니다.
$expandunions 변종 레코드 또는 공용체의 각 부분에 대한 값을 표시합니다.
$프레임 스택 추적 수행 및 로컬 변수 액세스를 위해 $frame 값에 의해 지정되는 주소가 가리키는 스택 프레임을 사용합니다.
$hexchars 문자를 16진수 값으로 출력합니다.
$16진 주소를 16진수로 해석합니다.
$hexints 정수를 16진수 값으로 출력합니다.
$hexstrings 문자 포인터를 16진수로 인쇄합니다.
$hold_다음 cont, next, nextistep 부속 명령 중에 실행 중인 스레드를 제외한 모든 스레드를 보류합니다. 이 변수를 설정하면 실행 중인 스레드가 차단된 스레드 중 하나가 보유하는 잠금을 기다릴 수 있으므로 교착 상태에 빠질 수 있습니다.
$ignoreifhandler 등록된 처리기가 있는 신호를 사용자 프로그램이 수신할 때 정지하지 않습니다.
$ignoreload 프로그램이 load, unload 또는 loadbind 서브루틴을 수행할 때 정지하지 않습니다.
$ignorenonbptrap 사용자 프로그램이 비중단점 트랩 명령어를 만나고 등록된 SIGTRAP 처리기가 있을 때 정지하지 않습니다.
$instructionset 디폴트 역어셈블 모드를 재정의합니다. 다음 리스트에 Expression 매개변수의 가능한 값을 포함합니다.
"기본값"
dbx 프로그램이 실행 중인 아키텍처를 지정합니다.
"com"
PowerPCPOWER family 아키텍처의 공통 교차 모드에 대한 명령어 세트를 지정합니다. dbx 프로그램의 기본값은 POWER 프로세서 기반 니모닉입니다.
"pwr"
POWER 계열 아키텍처에 대한 명령어 세트 및 니모닉을 지정합니다.
"pwrx"
AIX® 5.1 및 이전 버전용 POWER 제품군 아키텍처의 POWER2 구현을 위한 명령어 세트 및 니모닉을 지정합니다.
"pwr6"
PowerPC 아키텍처의 POWER6 구현에 대한 명령어 세트 및 니모닉을 지정합니다.
"pwr7"
PowerPC 아키텍처의 POWER7 구현에 대한 명령어 세트 및 니모닉을 지정합니다.
"pwr8"
PowerPC 아키텍처의 POWER8 구현에 대한 명령어 세트 및 니모닉을 지정합니다.
"pwr9"
PowerPC 아키텍처의 POWER9 구현에 대한 명령어 세트 및 니모닉을 지정합니다.
변경 시작"pwr10"변경 끝
변경 시작 PowerPC 아키텍처의 POWER10 구현을 위한 명령어 세트와 니모닉을 지정합니다.변경 끝
"601"
AIX 5.1 및 이전 버전의 PowerPC 601 RISC 마이크로프로세서 에 대한 명령어 세트 및 니모닉을 지정합니다.
"603"
AIX 5.1 및 이전 버전의 PowerPC 603 RISC 마이크로프로세서 에 대한 명령어 세트 및 니모닉을 지정합니다.
"604"
PowerPC 604 RISC 마이크로프로세서에 대한 명령어 세트 및 니모닉을 지정합니다.
"970"
PowerPC 970 마이크로프로세서에 대한 명령어 세트 및 니모닉을 지정합니다.
"ppc"
선택적 지시사항을 제외하고 POWER 프로세서 기반 아키텍처에 정의된 명령어 세트 및 니모닉을 지정합니다. 이 지시사항은 AIX 5.1 및 이전 버전의 PowerPC 601 RISC 마이크로프로세서 를 제외한 모든 POWER 프로세서 기반 구현에서 사용 가능합니다.
"모두"
유효한 POWER 프로세서 기반 또는 POWER 계열 명령어를 지정합니다. 겹치는 명령어 세트의 경우 기본값은 POWER 프로세서 기반 니모닉입니다.

Expression 매개변수에 대한 값이 설정되지 않는 경우 dbx 프로그램은 디폴트 역어셈블 모드를 사용합니다.

$Java 설정된 경우 다음 변수도 설정하여 dbx 명령을 Java 애플리케이션을 디버그하는 모드로 설정합니다. 설정 해제되면 다음 변수도 설정 해제합니다.
$ignorenonbptrap
Java의 JIT(Java Just-In-Time) 컴파일러로 생성된 트랩 지시사항의 통지를 억제합니다.
$listwindow list 부속 명령이 매개변수 없이 사용될 때 나열할 수 및 함수 주위에 나열할 행 수를 지정합니다. 디폴트는 10행입니다.
$mapaddrs 주소 맵핑을 시작합니다. $mapaddrs를 설정 해제하면 주소 맵핑이 정지됩니다.
$mapformat map 부속 명령에 대한 디폴트 출력 모드를 지정합니다.
"abbr"
축약된 출력 모드를 지정합니다. 이 출력은 로드된 모듈마다 해당 모듈의 항목 번호, 모듈 이름 및 선택적 멤버 이름을 포함하는 단일 행으로 구성됩니다.
"보통"
정상적인 출력 모드를 지정합니다. 이 출력은 로드된 각 모듈의 이름, 항목 번호, 모듈 이름, 멤버 이름, 텍스트 기점, 텍스트 길이, 데이터 기점, 데이터 길이 및 파일 설명자로 구성됩니다. 로드된 모듈이 TLS 데이터를 갖는 경우, TLS 데이터 기점과 TLS 데이터 길이도 표시됩니다.
"원시"
원시 출력 모드를 지정합니다. 이 출력은 모듈마다 항목 번호, 선택적 멤버 이름이 같이 있는 모듈 이름, 텍스트 기점, 텍스트 끝, 텍스트 길이, 데이터 기점, 데이터 끝, 데이터 길이 및 파일 설명자 필드들을 공백으로 구분하여 포함하는 형식화되지 않은 단일 행으로 구성됩니다. 로드된 모듈이 TLS 데이터를 갖는 경우 TLS 데이터 기점, TLS 데이터 끝 및 TLS 데이터 길이도 표시됩니다.
"상세"
상세 출력 모드를 지정합니다. 이 출력은 로드된 각 모듈의 이름, 항목 번호, 모듈 이름, 멤버 이름, 텍스트 기점, 텍스트 끝, 텍스트 길이, 데이터 기점, 데이터 끝, 데이터 길이 및 파일 설명자로 구성됩니다. 로드된 모듈이 TLS 데이터를 갖는 경우 TLS 데이터 기점, TLS 데이터 끝 및 TLS 데이터 길이도 표시됩니다.
Expression 매개변수에 대해 값이 설정되지 않은 경우 dbx 프로그램은 정상 출력 모드를 사용합니다.
$니모닉 역어셈블할 때 dbx 프로그램이 사용할 니모닉 세트를 변경합니다.
"기본값"
지정된 명령어 세트와 가장 근접하는 니모닉을 지정합니다.
"pwr"
POWER 계열 아키텍처에 대한 니모닉을 지정합니다.
"ppc"
선택적 지시사항을 제외하고 POWER 프로세서 기반 아키텍처 서적에 정의된 니모닉을 지정합니다.

Expression 매개변수에 대해 값이 설정되지 않은 경우 dbx 프로그램은 지정된 명령어 세트와 가장 가깝게 일치하는 니모닉을 사용합니다.

$noargs where, up, downdump 같은 부속 명령에서 인수를 생략합니다.
$noflregs registers 부속 명령에서 부동 소수점 레지스터의 표시를 생략합니다.
$novregs registers 부속 명령에서 벡터 레지스터의 표시를 생략합니다.
$novsregs registers 부속 명령에서 벡터 스칼라 레지스터의 표시를 생략합니다.
$octint 주소를 8진으로 해석합니다.
$octints 정수를 8진수로 인쇄합니다.
$pretty print 부속 명령을 사용하여 복잡한 C및 C++ 데이터 구조 (struts, 유니온, 배열) 값을 프리프린트 형식으로 표시합니다.
"설정"
각 행의 값과 각 값의 정적 유효범위를 나타내는 들여쓰기를 사용하여 pretty printing을 지정합니다.
"상세"
각 행의 값과 각 값의 정적 유효범위를 나타내는 규정화된 이름을 사용하여 pretty printing을 지정합니다. 규정화된 이름은 값이 연관된 외부 블록의 점으로 구분한 리스트로 구성됩니다.
"해제"
Pretty printing을 중단합니다. 이 값이 디폴트입니다.
$print_dynamic 인쇄 / 덤프 명령으로 C++ 오브젝트의 동적 유형을 표시합니다. 기본적으로 이 변수는 설정되지 않습니다.
$repeat 입력된 명령이 없으면 이전 명령을 반복합니다.
$sigblock 사용자 프로그램으로의 신호를 차단합니다.
$show_vft 인쇄 / 덤프 명령으로 C++ 오브젝트를 인쇄할 때 가상 함수 테이블을 표시합니다. 기본적으로 설정되지 않습니다.
$stack_세부사항 where 부속 명령에 의해 표시되는 각 활성 함수 또는 프로시저에 대한 프레임 번호 및 레지스터 세트를 표시합니다.
$stepignore 디버깅 정보를 사용할 수 없는 다른 루틴을 호출하는 소스 행에서 step/tstep 부속 명령이 실행될 때 dbx 명령이 작동하는 방법을 제어합니다. 이 변수를 사용하면 step/tstep 부속 명령이 디버깅 정보를 사용할 수 없는 대형 루틴을 step over할 수 있습니다. 다음 리스트에 Expression 매개변수의 가능한 값을 포함합니다.
"함수"
dbx 명령에 대한 next/tnext 부속 명령의 기능을 수행합니다. 이 값이 디폴트 값입니다.
"모듈"
함수가 디버그 정보를 사용할 수 없는 로드 모듈 (예: 시스템 라이브러리) 에 있는 경우 next/tnext 부속 명령의 함수를 수행합니다.
"없음"
소스 정보가 사용 가능한 명령어에 도달할 때까지 백그라운드에서 dbx 명령에 대한 stepi/tstepi 부속 명령의 기능을 수행합니다. 그 지점에서 dbx가 실행이 정지한 곳을 표시합니다.
$trace_good_transaction 트랜잭션 메모리(TM) 트랜잭션이 성공적으로 완료될 때마다 다음 메시지를 표시하도록 dbx 명령에 지시합니다.
Process {PID} may have performed a transaction - $texasr, $tfiar, $tfhar 
are valid and may be inspected

이 변수는 기본적으로 사용 불가능하므로 성공한 트랜잭션이 보고되지 않습니다.

$thcomp $thcomp가 설정되면 스레드 명령 th-에 의해 표시되는 정보는 압축된 형식으로 표시됩니다.
$unsafeassign assign문의 두 양측 사이에서 엄격한 유형 검사를 끕니다. $unsafeassign 변수가 설정되는 경우에도 assign문의 양측이 서로 다른 크기의 스토리지 유형을 포함하지 않을 수 있습니다.
$unsafebounds 배열의 첨자 검사를 끕니다.
$unsafecall ($unsafecall) 서브루틴이나 함수 호출을 위한 인수에 대한 엄격한 유형 검사를 끕니다.
$unsafegoto ($unsafegoto) goto 하위 명령 대상 검사를 끕니다.
$vardim 알 수 없는 경계를 갖는 배열을 인쇄하는 경우 사용할 차원 길이를 지정합니다. 디폴트 값은 10입니다.
$xdisplay multproc 부속 명령이나 screen 부속 명령에 사용할 X 윈도우 시스템의 표시 이름을 지정합니다. 디폴트 값은 쉘 DISPLAY 변수의 값입니다.

$unsafe 변수는 오류 발견 시 dbx 디버그 프로그램의 사용을 제한합니다.

  1. 나열할 기본 행 수를 변경하려면 다음을 수행하십시오.20, 다음을 입력하십시오.
    set $listwindow=20
  2. 다음에서 유형 검사를 사용 불가능하게 하려면assign부속 명령의 경우 다음을 입력
    set $unsafeassign
  3. POWER7 프로세서에 대한 기계 명령어를 분해하려면 다음을 입력하십시오.
    set $instructionset="pwr7"
  4. -eucCN 코드 집합으로 인코딩된 문자열을 표시하려면 입력합니다:
    set $codepage="IBM-eucCN"
  5. ID에서 4문자 한계 및 스택 추적에서 표시되는 문자열에서 12문자 한계를 지정하려면 다음 명령을 입력하십시오.
    set $compact_bt_ident=6
    set $compact_bt_string=12
    long_identifier, long_variable_name_strrecursive_fun 같은 ID를 사용하는 스택 추적 및 this_is_a_really_long_string 같은 문자열은 다음 출력과 유사하게 보입니다.
    long_i...(a = 11, long_v... = "this_is_a_re..."), line 3 in "example.c"
    recurs...(), line 13 in "example.c"

unset 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅에 있는 특수 디버그 프로그램 변수로 인쇄 출력 변경 을 참조하십시오.

set edit [vi, emacs] 또는 set -o [vi, emacs] 부속 명령

-o 또는 edit 옵션이 있는 set 하위 명령을 사용하여 행 편집 모드 중 하나를 켤 수 있습니다. set-o vi 또는 set edit vi 명령이 주어지면 사용자는 vi 행 편집기의 입력 모드에 위치하게 됩니다. set -o emacs 또는 set edit emacs 명령이 주어지면 사용자는 emacs 행 편집기의 입력 모드에 위치하게 됩니다.

  1. vi 행 편집기를 켜려면 다음을 입력하십시오.
    set-o vi

    또는

    set edit vi

sh 부속 명령

sh [ Command ]

sh 부속 명령은 Command 매개변수에 지정된 명령을 실행을 위해 쉘로 전달합니다. SHELL 환경 변수가 사용될 쉘을 결정합니다. 디폴트는 sh 쉘입니다. 인수가 지정되지 않으면 제어가 쉘로 이동됩니다.

  1. 다음을 실행하려면 ls다음을 입력하십시오.
    sh ls
  2. 쉘을 이스케이프하려면 다음을 입력하십시오.
    sh
  3. 다음을 사용하려면SHELL환경 변수, 다음을 입력하십시오.
    sh echo $SHELL

dbx에서쉘 명령 실행 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서의 내용을 참조하십시오.

skip 부속 명령

skip [ Number ]

skip 부속 명령은 현재 정지 지점에서 응용프로그램의 실행을 계속합니다. Number 매개변수의 값과 동일한 수의 중단점이 생략되고 다음 중단점에 도달하거나 프로그램이 종료될 때 실행이 중단됩니다. Number 매개변수를 지정하지 않으면 디폴트 값은 1이 됩니다.

두 번째 중단점을 만날 때까지 계속 실행하려면 다음을 입력하십시오.

skip 1

cont 부속 명령도 참조하십시오.

source 부속 명령

source 파일

source 부속 명령은 File 매개변수로 지정된 파일에서 dbx 부속 명령을 읽습니다.

dbx 하위 명령을 읽으려면cmdfile파일, 입력:

source cmdfile

일반 프로그래밍 개념: 프로그램 작성 및 디버깅에 있는 파일에서 dbx 부속 명령 읽기 를 참조하십시오.

status Subcommand

status [ more ] [ >파일 ]

status 부속 명령은 나머지 스레드 tskip 계수 ( tskip 부속 명령을 사용하여 설정) 와 함께 모든 사용자 정의 중단점, 추적점 및 감시점을 표시합니다. 추가 매개변수가 지정되는 경우 status 부속 명령은 중단점, 추적점 및 경계점과 연관된 dbx 부속 명령도 표시합니다. status 부속 명령은 이벤트 번호를 묶는 대괄호 ([]), 이벤트 번호를 묶는 마침표 (..) 가 있는 사용 불가능한 이벤트, 이벤트 번호를 묶는 꺾쇠괄호 (< >) 가 있는 지연된 이벤트와 함께 사용 가능한 이벤트를 나열합니다.

> 플래그는 status 부속 명령의 출력을 File 매개변수에 지정한 파일로 전송합니다.

플래그 지정

항목 설명
>파일 출력을 File로 방향 재지정합니다.

  1. 모든 사용자 정의 중단점, 추적점 및 감시점과 나머지 스레드 tskip 계수를 표시하려면 다음을 입력하십시오.
    status
    출력은 다음과 유사합니다.
    [1] stop at 13
    [2] stop at 14
    .3. stop at 15
    .4. stop at 16
    [5] stop at 17 ( count = 0, limit = 3 )
    <6> stop at 18 if g > 10
    <7> stop in func
    
    Remaining tskip counts:
    tskip 2 for $t1
    tskip 1 for $t5
    예제 출력에서, 이벤트 3과 4는 사용 불가능하고 이벤트 6과 7은 연기됩니다.
  2. dbx 부속 명령과 연관된 모든 사용자 정의 중단점, 추적점 및 경계점을 표시하려면 다음을 입력하십시오.
    status more
    출력은 다음과 유사합니다.
           [1] stop at 13
               [1] where 
           .2. stop at 14
               [1] where
               [2] registers        
           <3> stop at 15 if g > 10
               [1] where; registers

dbx 명령에 대한 addcmd 부속 명령, clear 부속 명령, delete 부속 명령, delcmd 부속 명령, tskip 부속 명령, stop 부속 명령 및 trace 부속 명령을 참조하십시오.

또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅에서 중단점 설정 및 삭제 를 참조하십시오.

step 부속 명령

step [ Number ]

step 부속 명령은 애플리케이션 프로그램의 소스 행을 실행합니다. Number 매개변수를 사용하여 실행될 행의 수를 지정하십시오. Number 매개변수가 생략되면 1의 값으로 기본 설정됩니다.

멀티스레드 애플리케이션 프로그램에서 step 부속 명령을 사용하면, 모든 사용자 스레드는 조작 중에 실행되지만 프로그램은 실행 중인 스레드가 지정된 소스 행에 도달할 때까지 계속 실행됩니다. 실행 중인 스레드만 진행하려는 경우 set 부속 명령을 사용하여 $hold_next 변수를 설정하십시오. 이 변수를 설정하면 실행 중인 스레드가 차단된 스레드 중 하나가 보유하는 잠금을 기다릴 수 있으므로 교착 상태에 빠질 수 있습니다.

참고: set 하위 명령의 $stepignore 변수를 사용하여 step 하위 명령의 동작을 제어하십시오. $stepignore 변수는 step 부속 명령이 사용 가능한 디버깅 정보가 없는 큰 루틴을 넘어설 수 있게 합니다.

  1. 한 소스 행에 대한 실행을 계속하려면 다음을 입력하십시오.
    step
  2. 5개 소스 행에 대한 실행을 계속하려면 다음을 입력하십시오.
    step 5
  3. 다음 예제 코드에서 보는 것처럼 dbx 프로그램이 printf 함수를 한 단계씩 실행하지 못하게 하려면,
    60 printf ("hello world \n");

    다음을 입력하십시오.

    set $stepignore="function"; step

cont 부속 명령, goto 부속 명령, next 부속 명령, set 부속 명령 및 stepi 부속 명령을 참조하십시오.

stepi 부속 명령

stepi [ Number ]

stepi 부속 명령은 애플리케이션 프로그램의 명령어를 실행합니다. Number 매개변수를 사용하여 실행될 명령어의 수를 지정하십시오. Number 매개변수가 생략되면 디폴트 값은 1입니다.

멀티스레드 애플리케이션 프로그램에서 사용될 경우, stepi 부속 명령은 실행 중인 스레드만 처리합니다. 다른 모든 사용자 스레드는 정지된 채 남아 있습니다.

  1. 한 기계 명령어의 실행을 계속하려면 다음을 입력하십시오.
    stepi 
  2. 5개 기계 명령어의 실행을 계속하려면 다음을 입력하십시오.
    stepi 5

gotoi 부속 명령, nexti 부속 명령 및 step 부속 명령을 참조하십시오.

stop 부속 명령

stop {[Variable ] [ at SourceLine | in Procedure | on load ["ModuleName"] [ if Condition ]} ["{"Limit"}"]

stop 부속 명령은 특정 조건이 충족될 때 애플리케이션 프로그램을 정지합니다. 프로그램은 다음 경우에 정지됩니다.

  • 조건if 조건 플래그가 사용되면 참입니다.
  • in Procedure 플래그가 사용되는 경우 Procedure 가 호출됩니다.
  • Variable 매개변수가 지정되는 경우 Variable이 변경됩니다.
  • at SourceLine 플래그가 사용되는 경우 SourceLine 행 번호에 도달합니다.

    SourceLine 변수는 정수 또는 :(콜론) 및 정수가 뒤에 붙는 파일 이름 문자열로 지정할 수 있습니다.

  • ModuleName 로드 모듈은 on load 플래그를 사용하고 ModuleName 매개변수를 지정한 경우에 로드 또는 로드 해제됩니다.
    선택적 ModuleName 변수는 단일 모듈 이름으로 또는 다음 형식과 같이 멤버 이름과 쌍을 이루는 모듈 이름으로 지정할 수 있습니다.
    ModuleName(MemberName)
  • on load 플래그가 사용되고 ModuleName 매개변수가 지정되지 않는 경우 임의의 로드된 모듈이 로드 또는 로드 해제됩니다.

Limit 매개변수를 설정하여 dbx 명령이 지정된 횟수 동안 조건을 무시하도록 지시할 수 있습니다. 다시 말하면, Limit 매개변수는 디버그 프로그램 실행이 정지되기 전에 지정된 조건이 이행되어야 하는 횟수를 지정합니다.

이들 명령 중 하나의 뒤에 dbx 디버그 프로그램은 명령의 결과로서 빌드한 이벤트를 보고하는 메시지로 응답합니다. 메시지에는 명령에 대한 설명과 함께 중단점에 연관된 이벤트 ID를 포함합니다. 해석의 구문은 명령과 같지 않을 수 있습니다. 예를 들어 다음과 같습니다.

stop in main
[1] stop in main
stop at 19 if x == 3
[2] stop at "hello.c":19 if x = 3
stop in func
<3> stop in func
stop g 
<4> stop g
stop in getdata {3} 
[5] stop in getdata ( count = 0, limit = 3 ) 

대괄호([]) 안의 숫자는 중단점과 관련된 이벤트 ID입니다. dbx 디버그 프로그램은 이벤트 번호를 각 stop 부속 명령에 연관시킵니다. 이벤트 중 하나의 결과로 프로그램이 중지하면, 현재 행과 함께 이벤트 ID가 표시되어 어떤 이벤트가 프로그램을 정지시켰는지 알 수 있습니다. 각괄호(<>) 내의 숫자는 지연된 이벤트의 이벤트 ID입니다. 지연된 이벤트는 연관된 중단점, 추적점 또는 경계점이 없는 이벤트이며, 입력 명령이 메모리에 현재 로드되지 않은 기호를 포함할 때마다 생성됩니다. 대괄호([])로 표시된 정상적인 이벤트의 경우도 해당되는 모듈이 로드 해제될 때마다 지연된 이벤트로 변환됩니다. 지연된 이벤트에 대응하는 모듈이 메모리에 로드될 때마다, 지연된 이벤트가 정상 이벤트로 변환되고 대응하는 중단점, 추적점 또는 경계점이 작성됩니다. 사용자가 작성하는 이벤트는 dbx 명령에 의해 작성되는 내부 이벤트와 공존하므로 이벤트 번호가 항상 순차적이 아닐 수 있습니다.

limitbp 부속 명령을 사용하여 한계를 작성한 후 이벤트와 연관시킬 수 있습니다. 이벤트와 연관된 한계를 보기 위해 printbp 부속 명령을 사용할 수 있습니다.

이들 번호를 보려면 status 부속 명령을 사용하십시오. status의 출력을 파일로 방향 재지정할 수 있습니다. stop 부속 명령을 끄거나, enable 또는 disable 부속 명령을 사용하려면 delete 또는 clear 부속 명령을 사용하십시오. addcmd 부속 명령을 사용하여 dbx 부속 명령을 지정된 이벤트 번호에 추가하고, delcmd 부속 명령을 사용하여 연관된 dbx 부속 명령을 지정된 이벤트 번호에서 삭제하십시오.

멀티스레드 애플리케이션 프로그램에서는 사용자 스레드가 중단점에 도달하면 모든 사용자 스레드가 정지합니다. 조건을 지정하지 않으면 ( 예 9에서와 같이) 행 또는 함수를 실행하는 사용자 스레드가 소스 행 또는 함수에 설정된 중단점을 발견합니다. 다음 별명은 자동으로 조건을 지정합니다.

  • bfth(함수, ThreadNumber)
  • blth(소스줄, ThreadNumber)

ThreadNumberthread 부속 명령에 의해 보고되는 기호 스레드 이름의 번호 부분입니다. 예를 들어, 5는 스레드 이름 $t5에 대한 ThreadNumber 입니다. 이들 별명은 실제로는 다음 예에 표시된 확장된 부속 명령을 생성하는 매크로입니다.

stopi at &Function if ($running_thread == ThreadNumber)
stop at SourceLine if ($running_thread == ThreadNumber)

플래그

항목 설명
at SourceLine 행 번호를 지정합니다.
if 조건 true 같은 조건을 지정합니다.
in Procedure 호출될 프로시저를 지정합니다.
로드 시 ModuleName 모니터할 로드된 모듈을 지정합니다.

  1. 첫 번째 명령문에서 실행을 중지하려면 다음을 수행하십시오.main다음을 입력하십시오.
    stop in main
  2. 실행을 중지하려면x변수가 행에서 변경됨12다음을 입력하십시오.
    stop x at 12
  3. 파일의 행 5에서 실행을 중지하려면 다음을 수행하십시오.sample.c, 다음을 입력하십시오.
    stop at "sample.c":5
  4. 값을 확인하려면 다음을 수행하십시오.xdbx 명령이 내부에서 서브루틴을 실행할 때마다func1, 다음을 입력하십시오.
    stop in func1 if x = 22
  5. 값을 확인하려면 다음을 수행하십시오.xdbx 명령이 실행을 시작할 때마다func1, 다음을 입력하십시오.
    stopi at &func1 if x = 22
  6. Variable의 값이 변할 때 프로그램을 정지하려면 다음을 입력하십시오.
    stop Variable
  7. Condition이 true로 평가될 때마다 프로그램을 정지하려면 다음을 입력하십시오.
    stop if (x > y) and (x < 2000)
  8. 다음 예제는 활성 이벤트를 표시하고 제거하는 방법을 보여줍니다.
    status
    [1] stop in main
    [2] stop at "hello.c":19 if x = 3
    delete 1
    status
    [2] stop at "hello.c":19 if x = 3
    clear 19
    status
    (dbx)
    delete 명령은 이벤트 ID별로 이벤트를 제거합니다. clear 명령은 행 번호로 중단점을 삭제합니다.
  9. 다음의 시작 부분에 중단점을 배치하려면 다음을 수행하십시오.func1스레드에 의해 실행되는 경우에만$t5, 다음 동등한 명령 중 하나를 입력하십시오.
    stopi at &func1 if ($running_thread == 5)
    또는
    bfth(func1, 5)
  10. 모듈이 로드 또는 로드 해제될 때 프로그램을 정지하려면 다음을 입력하십시오.
    stop on load
  11. Module 모듈이 로드 또는 로드 해제될 때마다 프로그램을 정지하려면 다음을 입력하십시오.
    stop on load "Module"
  12. Module 모듈의 Member 멤버가 로드 또는 로드 해제될 때마다 프로그램을 정지하려면 다음을 입력하십시오.
    stop on load "Module(Member)"
  13. 세 번째로 호출될 때 getdata 함수에서 프로그램을 정지하려면 다음을 입력하십시오.
    stop in getdata {3}

addcmd 부속 명령, clear 부속 명령, delete 부속 명령, delcmd 부속 명령, disable 부속 명령, enable 부속 명령, limitbp 부속 명령, printbp 부속 명령, status 부속 명령, stopi 부속 명령, 및 trace 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅에서 중단점 설정 및 삭제 를 참조하십시오.

stophwp 부속 명령

stophwp 주소 크기

stophwp 부속 명령은 지정된 메모리 영역에 대한 하드웨어 경계점 정지를 설정합니다. 프로그램은 영역의 내용이 변경될 때 정지됩니다.
주:
  1. stophwp 부속 명령의 성공은 하드웨어에 달려 있습니다. 이 기능은 POWER630 및 POWER4 이상에서만 사용 가능합니다.
  2. 단일 경계점만 설정할 수 있는 하드웨어 한계의 결과로서, stophwptracehwp를 사용하여 다른 하드웨어 경계점 이벤트를 작성하려고 할 때 활성 경계점 이벤트가 충돌로 작용합니다. 따라서, 새로운 이벤트를 작성하기 전에 이전 이벤트를 삭제해야 합니다. 또한 활성 소프트웨어 경계점(stoptrace 부속 명령의 일부 호출에 의해 작성됨)의 존재가 하드웨어 경계점의 성능 이득을 무효로 만들므로, 이런 유형의 이벤트도 하드웨어 경계점을 작성하기 전에 삭제되어야 하는 충돌로 작용합니다.

  1. 주소 0x200004e8에서 시작하는 4바이트 메모리 영역의 컨텐츠가 변할 때 프로그램을 정지하려면 다음을 입력하십시오.
    stophwp 0x200004e8 4

tracehwp 부속 명령을 참조하십시오.

stopi 부속 명령

stopi { [주소] [ 위치 주소 | 에서 프로시저 ] [ 만약 조건 ]}

stopi 부속 명령은 지정된 위치에 정지를 설정합니다.

  • if Condition 플래그와 함께 사용하면 프로그램은 조건 true가 지정될 때 정지합니다.
  • Address 매개변수와 함께 사용하면 프로그램은 Address의 컨텐츠가 변할 때 정지합니다.
  • at Address 플래그와 함께 사용하면 지정된 주소에 정지가 설정됩니다.
  • in Procedure 플래그와 함께 사용하면 프로그램은 Procedure가 호출될 때 정지합니다.

플래그

항목 설명
if 조건 true 같은 조건을 지정합니다.
in Procedure 호출될 프로시저를 지정합니다.
at Address 기계 명령어 주소를 지정합니다.

  1. 주소에서 실행을 중지하려면0x100020f0, 다음을 입력하십시오.
    stopi at 0x100020f0
  2. 주소의 컨텐츠가0x100020f0다음을 입력하십시오.
    stopi 0x100020f0
  3. 주소 0x100020f0 의 컨텐츠가 스레드에 의해 변경될 때 실행을 중지합니다.$t1, 다음을 입력하십시오.
    stopi 0x200020f0 if ($running_thread == 1)

stop 부속 명령을 참조하십시오. dbx를 사용하여 시스템 레벨에서 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서도 참조하십시오.

thdata 부속 명령

thdata [ $tthreadnumber [모두 | key1 ...] … ] | [모두]

thdata 부속 명령은 다른 키와 연관되는 스레드 고유 데이터를 인쇄하며, 키는 pthread_key_create() 함수를 사용하여 작성됩니다. 다음 방법으로 thdata 부속 명령을 사용할 수 있습니다.
명령 조치
thdata [모두] 사용 가능한 모든 스레드에 대한 모든 키와 연관된 스레드 고유 데이터를 인쇄합니다.
thdata $t1 [모두] $t1 스레드에 대한 모든 키와 연관된 스레드 고유 데이터를 인쇄합니다.
thdata $t1 key1 key2 $t1 스레드에 대한 key1key2 키와 연관되는 스레드 고유 데이터를 인쇄합니다.
thdata $t1 key1 key2 $t2 key1 $t1 스레드에 대한 key1key2 키와 연관된 스레드 고유 데이터 및 $t2 스레드에 대한 key1 키와 연관된 스레드 고유 데이터를 인쇄합니다.

  1. 사용 가능한 모든 키와 함께 현재 스레드에 연관된 데이터를 인쇄하려면 다음을 입력하십시오.
    (dbx) thdata $t1
    Thread  :  1
    	Key : 1 Data pointer : 0x200f7a28
    	Key : 2  Data pointer : 0x200f7aa8
    	Key : 3 Data pointer : 0x200f7ac4
    (dbx) 
  2. 복수 스레드 및 복수 키에 연관된 데이터를 인쇄하려면 다음을 입력하십시오.
    (dbx) thdata $t1 2 3 $t2
    Thread  :  1
    	Key : 2  Data pointer : 0x200f7aa8
    	Key : 3 Data pointer : 0x200f7ac4
    Thread : 2
    	Key : 2  Data pointer : 0x200f7b24
    	Key : 3 Data pointer : 0x200f7ba4
    (dbx)

일반 프로그래밍 개념: 프로그램 작성 및 디버깅에서 스레드 특정 데이터 를 참조하십시오.

스레드 부속 명령

선택한 스레드 표시

thread {[ info ] [ - ] [ ThreadNumber ...]} | current | run | susp | term | wait

개별 스레드 선택

thread 현재 [-] ThreadNumber

스레드 보류 또는 해제

thread { hold | 보류 해제 } [-] [ ThreadNumber ...]

표시되는 옵션 도움말

thread { 도움말}

thread 부속 명령은 사용자 스레드를 표시하고 제어합니다.

thread 부속 명령의 첫 번째 양식은 두 가지 형식으로 정보를 표시할 수 있습니다. thread 부속 명령이 th이면 표시되는 정보는 첫 번째 형식입니다. thread 부속 명령이 th -이면, 표시되는 정보는 두 번째 형식입니다. 매개변수를 제공하지 않으면, 모든 사용자 스레드에 대한 정보가 표시됩니다. 하나 이상의 ThreadNumber 매개변수를 제공하면 해당 사용자 스레드에 대한 정보가 표시됩니다. thread 부속 명령이 스레드를 표시할 때 현재 스레드 행 앞에 >가 표시됩니다. 실행 중인 스레드가 현재 스레드와 동일하지 않으면 해당 행 앞에 *가 표시됩니다. 두 형식 모두로 thread 부속 명령에 의해 표시되는 정보는 다음과 같습니다.

thread 부속 명령에 의해 첫 번째 형식으로 표시되는 정보는 다음과 같습니다.

항목 설명
thread 사용자 스레드의 기호 이름을 다음 양식으로 표시합니다.$tThreadNumber.
state-k 사용자 스레드가 커널 스레드에 접속되어 있는 경우, 커널 스레드 상태를 나타냅니다. 이는 다음과 같습니다.run,wait,susp또는term, 실행 중, 대기 중, 일시중단됨 또는 종료됨을 의미합니다.
wchan 커널 스레드가 대기 중 또는 휴면 중 상태인 이벤트를 나타냅니다(사용자 스레드가 커널 스레드에 연결되어 있는 경우).
state-u 사용자 스레드의 상태를 표시합니다. 상태는 다음과 같습니다.running,blocked또는terminated.
k-tid 커널 스레드 ID를 나타냅니다(사용자 스레드가 커널 스레드에 연결되어 있는 경우).
mode 사용자 스레드가 정지된 모드(커널 또는 사용자)임을 나타냅니다(사용자 스레드가 커널 스레드에 연결되어 있는 경우).
held 사용자 스레드가 보류되고 있는지 여부를 나타냅니다.
scope 사용자 스레드의 경합 유효범위를 표시합니다. 이는 다음과 같을 수 있습니다.sys또는pro시스템 또는 프로세스 경합 유효범위의 경우.
function 사용자 스레드 함수의 이름을 나타냅니다.

thread 부속 명령에 의해 두 번째 형식으로 표시되는 정보는 다음과 같습니다. 기본적으로 thread 부속 명령 th -의 경우 정보가 자세한 양식으로 표시됩니다.

항목 설명
thread 사용자 스레드의 기호 이름을 다음 양식으로 표시합니다.$tThreadNumber.

커널 스레드 관련 정보

항목 설명
tid 사용자 스레드 ID입니다(사용자 스레드가 커널 스레드에 접속되어 있는 경우).
pri 커널 스레드의 우선순위입니다.
sched 커널 스레드의 스케줄링 정책을 표시합니다. 이 값은 선입선출(FIFO), 기타 또는 라운드로빈 스케줄링 정책에 대해 fif, oth, rr일 수 있습니다.
state 사용자 스레드가 커널 스레드에 접속되어 있는 경우, 커널 스레드 상태를 나타냅니다. 이 값은 실행 중, 대기 중, 일시중단됨 또는 좀비에 대한 run, wait, susp 또는 zomb일 수 있습니다.

사용자 스레드 관련 정보

항목 설명
tid 사용자 스레드 ID를 표시합니다.
pri 사용자 스레드의 우선순위를 표시합니다.
sched 사용자 스레드의 스케줄 정책을 표시합니다. 이 값은 선입선출(FIFO), 기타 또는 라운드로빈 스케줄링 정책에 대해 fif, oth, rr일 수 있습니다.
state 사용자 스레드의 상태를 표시합니다. 이 값은 실행 중, 작성 중, 일시 중단됨, 차단됨, 실행 가능 또는 종료됨일 수 있습니다.
state 사용자 상태를 16진수로 나타냅니다.
flags pthread 플래그의 값을 16진수로 나타냅니다.
wchan 커널 스레드가 대기 중 또는 휴면 중 상태인 이벤트를 나타냅니다(사용자 스레드가 커널 스레드에 연결되어 있는 경우).
mode 사용자 스레드가 정지된 모드(커널 또는 사용자)임을 나타냅니다(사용자 스레드가 커널 스레드에 연결되어 있는 경우).
held 사용자 스레드가 보류되는지 여부를 나타냅니다.
scope 사용자 스레드의 경합 범위를 나타냅니다. 이 값은 시스템 또는 프로세스 경합 범위에 대한 sys 또는 pro가 됩니다.
cancelation
pending
취소가 보류 중인지 여부를 나타냅니다.
state
취소의 모드와 상태를 나타냅니다.

취소가 보류 중이 아니고 상태와 모드가 각각 사용 및 연기됨인 경우, 취소 상태 및 모드가 사용 및 비동기인 경우에 ed로 표시되고 모드가 사용이 아닌 경우 ea로 표시되며 d로 표시됩니다.

취소가 보류 중이고 취소 상태와 모드가 각각 사용 및 연기됨인 경우, 취소 상태 및 모드가 사용 및 비동기인 경우에 ED로 표시되고 모드가 사용이 아닌 경우 EA로 표시되며 D로 표시됩니다.

항목 설명
joinable 스레드를 결합할 수 있는지 여부를 나타냅니다.
boosted 스레드의 부스트 값을 나타냅니다.
function 사용자 스레드 함수의 이름을 나타냅니다.
cursig 현재 신호 값을 나타냅니다.

옵션이 설정된 경우$thcomp설정되면 다음 예제에 표시된 대로 정보가 압축된 양식으로 표시됩니다.

m           mode           (k)ernel (u)ser
k           k-state        (r)unning (w)aiting (s)uspended (z)ombie
u           u-state        (r)unning (R)unnable (s)uspended (t)erminated

                           (b)locked (c)reating
h           held           (yes) (n)o
s           scope          (s)ystem (p)rocess
c           cancellation   not pending:  (e)nabled & (d)eferred,
                                         (e)nabled & (a)sync, (d)isabled
                           pending    :  (E)nabled & (D)eferred,
                                         (E)nabled & (A)sync, (D)isabled
j           joinable       (yes) (n)o
b           boosted        value of boosted field in pthread structure
plk         kernel thread  (oth)er  (fif)o  (rr)-> round-robin
            policy
plu         user thread    (oth)er  (fif)o  (rr)-> round-robin
            policy
prk         kernel thread  hex number
            policy
pru         user thread    hex number
            policy
k-tid                      kernel thread id in hex
u-tid                      pthread id in hex
fl                         value of flags field in pthread structure in hex
sta                        value of state field in pthread structure in hex
cs                         value of the current signal
wchan                      event for which thread is waiting
function                   function name           

thread 부속 명령의 두 번째 양식은 현재 스레드를 선택하는 데 사용됩니다. dbx 디버그 프로그램의 print, registerswhere 부속 명령은 모두가 현재 스레드의 문맥에서 작동합니다. 현재 스레드가 커널 모드에 있는 경우 registers 부속 명령은 레지스터를 표시할 수 없습니다.

thread 부속 명령의 세 번째 양식은 스레드 실행을 제어하는 데 사용됩니다. 스레드는 hold 플래그를 사용하여 보류하거나 unhold 플래그를 사용하여 해제할 수 있습니다. 보류된 스레드는 해제될 때까지 재개되지 않습니다.

주: dbx 디버그 프로그램의 print 부속 명령은 기호 스레드 이름을 인식하며 해당 오브젝트의 상태를 표시하는 데 사용할 수 있습니다.

플래그

항목 설명
현재 ThreadNumber 매개변수가 제공되지 않으면, 현재 스레드를 표시합니다. ThreadNumber 매개변수가 제공되면, 지정된 사용자 스레드를 현재 스레드로 선택합니다.
도움말 th - 명령이 사용될 때 표시되는 스레드 옵션에 대한 모든 정보를 표시합니다.
보류 ThreadNumber 매개변수가 제공되지 않은 경우, 모든 사용자 스레드를 보류하고 표시합니다. 하나 이상의 ThreadNumber 매개변수가 제공되면 지정된 사용자 스레드를 보류하고 표시합니다.
보류 해제 (unhold) ThreadNumber 매개변수가 제공되지 않은 경우, 이전에 보류했던 모든 사용자 스레드를 해제하여 표시합니다. 하나 이상의 ThreadNumber 매개변수가 제공되면 지정된 사용자 스레드를 해제하여 표시합니다.
정보 ThreadNumber 매개변수가 제공되지 않은 경우 모든 사용자 스레드를 long 형식으로 표시합니다. 하나 이상의 ThreadNumber 매개변수가 제공되는 경우 지정된 사용자 스레드를 나열하는 long 형식을 표시합니다.

모든 이전 플래그는 [-] 옵션을 갖습니다. 이 옵션이 제공되면 표시되는 스레드 정보는 두 번째 형식이며set $thcomp옵션이 설정됩니다.

실행 다음에 있는 스레드를 표시합니다.run때문입니다.
susp 다음에 있는 스레드를 표시합니다.susp때문입니다.
기간 다음에 있는 스레드를 표시합니다.term때문입니다.
wait 다음에 있는 스레드를 표시합니다.wait때문입니다.

  1. 대기 상태에 있는 스레드에 대한 정보를 표시하려면, 다음을 입력하십시오.
    thread  wait
    출력은 다음과 유사합니다.
    thread  state-k   wchan state-u   k-tid mode held scope function 
     $t1     wait            running   17381   u   no   pro  main
     $t3     wait            running    8169   u   no   pro  iothread
  2. 여러 개의 주어진 스레드에 관한 정보를 표시하려면 다음을 입력하십시오.
    thread 1 3 4
    출력은 다음과 유사합니다.
    thread  state-k   wchan state-u   k-tid mode held scope function
     $t1     wait           running   17381   u   no   pro  main
     $t3     wait           running    8169   u   no   pro  iothread
    >$t4     run            running    9669   u   no   pro  save_thr
  3. thread 4를 현재 스레드로 하려면, 다음을 입력하십시오.
    thread  current 4
  4. thread 번호 2를 보류하려면, 다음을 입력하십시오.
    thread  hold 2
  5. 대기 상태에 있는 스레드에 대한 정보를 두 번째 형식으로 표시하려면 다음을 입력하십시오.
    thread wait -

    출력은 다음과 유사합니다.

    thread m k u h s c  j b  kpl  upl  kpr upr k_tid   u_tid   fl  sta wchan  function
    *$t1   u r w n p ed y 0  oth  oth  61   1  0043e5  000001  51  004        main
     $t3   u r w n p ed y 0  oth  oth  61   1  001fe9  000102  51  004        iothread
    >$t4   u r r n p ed y 0  oth  oth  61   1  0025c5  000203  50  064        save_thr  
  6. 여러 개의 주어진 스레드에 대한 정보를 두 번째 형식으로 표시하려면 다음을 입력하십시오.
    thread - 1 2 3

    출력은 다음과 유사합니다.

    thread m k u h s c  j b  kpl  upl  kpr upr k_tid   u_tid   fl  sta wchan function
    *$t1   u r w n p ed y 0  oth  oth  61   1  0043e5  000001  51  004       main
     $t3   u r w n p ed y 0  oth  oth  61   1  00fe9   000102  51  004       iothread
    >$t4   u r r n p ed y 0  oth  oth  61   1  0025c5  000203  50  064       save_thr

attribute 부속 명령, condition 부속 명령, mutex 부속 명령, print 부속 명령, registers 부속 명령 및 where 부속 명령을 참조하십시오.

또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅스레드 작성 을 참조하십시오.

tls 부속 명령

tls map

tls 하위 명령은 로드된 각 TLS 모듈의 TLS 초기화 템플리트 원본 및 길이를 표시하는 데 사용하는 하나의 플래그만 사용합니다.

tm_status 부속 명령

tm_status

tm_status 부속 명령은 $texasr 변수의 컨텐츠(트랜잭션 예외 및 요약 레지스터)를 표시하고 해당 컨텐츠를 해석하여 트랜잭션 실패의 원인과 본질을 판별합니다.

$texasr 변수에 저장된 값을 표시하고 해석하려면 다음 명령을 입력하십시오.

(dbx) tm_status

다음 예제와 유사한 출력이 표시됩니다.

REGISTER : TEXASR = 0x100000018C000001
Bit(s)   |Field                     |Meaning
_________________________________________________________________________________
0-7      Failure Code                TM_SIG_DELIVERED | Failed due to signal delivery
7        Failure Persistent          Failure is transient
31       Abort                       Execution of TM instruction caused Abort
32       Suspended                   Failure while in Suspended State
34-35    Privilege                   During Failure process-thread privilege state was 0
36       Failure                     Summary Failure recording has been performed
37       TFIAR (in)exact             TFIAR is exact
38       Rollback Only Transaction   non-ROT tbegin. initiated
52-63    Transaction Level           1

tnext 부속 명령

tnext [번호]

tnext 부속 명령은 실행 중인 스레드를 다음 소스 행까지 실행합니다. Number 매개변수는 tnext 부속 명령이 실행되는 횟수를 지정합니다. Number 매개변수가 지정되지 않으면 tnext 는 한 번만 실행됩니다. 이 부속 명령은 시스템 범위 스레드에서만 시작될 수 있습니다.

모든 스레드는 이 조작 중에 실행됩니다. 이 조작 중 중단점을 캐치하려면 $catchbp dbx 변수를 설정하십시오. $catchbp 변수가 설정되고 다른 스레드에 대해 중단점에 도달하면 tnext 부속 명령은 나머지 횟수 동안 반복되지 않습니다.

  1. 다음 소스 행까지 실행 중인 스레드의 실행을 계속하려면 다음을 입력하십시오.
    tnext
  2. 현재 소스 행 뒤에 오는 세 번째 소스 행까지 실행 중인 스레드의 실행을 계속하려면 다음을 입력하십시오.
    tnext 3

tnexti 부속 명령을 참조하십시오. 또한 다중 스레드를 포함하는 프로그램 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서을 참조하십시오.

tnexti 부속 명령

tnexti [번호]

tnexti 부속 명령은 다음 명령어까지 실행 중인 스레드를 실행합니다. Number 매개변수는 tnexti 부속 명령이 실행되는 횟수를 지정합니다. Number 매개변수가 지정되지 않으면 tnexti 는 한 번만 실행됩니다. 이 부속 명령은 시스템 범위 스레드에서만 시작될 수 있습니다.

모든 스레드는 이 조작 중에 실행됩니다. 이 조작 중 중단점을 캐치하려면 $catchbp dbx 변수를 설정하십시오. $catchbp 변수가 설정되고 다른 스레드에 대해 중단점에 도달하면 tnexti 부속 명령은 나머지 횟수 동안 반복되지 않습니다.

  1. 다음 기계 명령어까지 실행 중인 스레드의 실행을 계속하려면 다음을 입력하십시오.
    tnexti
  2. 현재 기계 명령어 뒤에 오는 세 번째 기계 명령어까지 실행 중인 스레드의 실행을 계속하려면 다음을 입력하십시오.
    tnexti 3

tnext 부속 명령을 참조하십시오. 또한 다중 스레드를 포함하는 프로그램 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서을 참조하십시오.

trace 부속 명령

trace [ SourceLine | Expression at SourceLine | Procedure | [ Variable ] [ at SourceLine | in Procedure ] | on load ModuleName ] [ if 조건 ]

trace 부속 명령은 프로그램이 실행할 때 지정된 프로시저, 함수, 소스 행, 표현식 또는 변수에 대한 추적 정보를 인쇄합니다. SourceLine 변수는 정수 또는 :(콜론) 및 정수가 뒤에 붙는 파일 이름 문자열로 지정할 수 있습니다. 조건을 지정할 수 있습니다. dbx 디버그 프로그램은 숫자를 각 trace 부속 명령과 연관시킵니다. 이들 번호를 보려면 status 부속 명령을 사용하십시오. 추적을 중단하려면 delete 부속 명령을 사용하십시오. 각각 enabledisable 부속 명령을 사용하여 추적을 사용 및 사용 안함으로 설정할 수 있습니다.

trace 부속 명령은 디버그된 프로세스에서 모듈을 로드하거나 로드 해제할 때 추적 정보를 표시할 수 있습니다. 선택적 ModuleName 매개변수를 단일 모듈 이름으로 또는 다음 형식과 같이 멤버 이름과 쌍을 이루는 모듈 이름으로 지정할 수 있습니다.
ModuleName(MemberName)

on load 플래그가 ModuleName 매개변수 없이 사용되는 경우, dbx 명령은 모든 모듈의 로드 및 언로드를 추적합니다.

기본적으로 추적은 프로세스 기반입니다. 스레드 기반 추적을 작성하려면 예제 8에서와 같이 조건에서 스레드를 지정하십시오.

플래그

항목 설명
at SourceLine 추적 중인 표현식이 있는 소스 행을 지정합니다.
if 조건 추적 시작 조건을 지정합니다. 추적은 if Condition이 true인 경우에만 시작합니다.
in Procedure 추적될 프로시저나 변수를 찾는 데 사용할 프로시저를 지정합니다.
on load ModuleName 모니터할 로드 모듈을 지정합니다.

  1. printf 프로시저에 대한 각 호출을 추적하려면 다음을 입력하십시오.
    trace printf
  2. hello.c 파일에 있는 행 22의 각 실행을 추적하려면 다음을 입력하십시오.
    trace "hello.c":22
  3. main 프로시저 내에서 x 변수에 대한 변경사항을 추적하려면 다음을 입력하십시오.
    trace x in main
  4. 데이터 주소 0x2004000을 추적하려면 다음을 입력하십시오.
    set $A=0x2004000
    trace $A
    주: tracei 부속 명령은 주소를 추적하도록 설계되었습니다.
  5. 지정된 Procedure가 활성일 때로 소스 행의 인쇄를 제한할 수 있습니다. 또한 선택적 Condition을 지정하여 추적 정보가 생성되어야 하는 시기를 제어할 수도 있습니다. 예를 들어 다음과 같습니다.
    (dbx) trace in sub2
    [1] trace in sub2
    (dbx) run
    trace in hellosub.c:  8  printf("%s",s);
    trace in hellosub.c:  9  i = '5';
    trace in hellosub.c:  10  }
  6. 프로시저가 호출 또는 리턴될 때마다 메시지를 표시할 수 있습니다. 프로시저가 호출되면, 정보에는 전달된 매개변수 및 호출 루틴의 이름이 포함됩니다. 리턴 시에는 정보에 Procedure의 리턴 값이 포함됩니다. 예를 들어 다음과 같습니다.
    (dbx) trace sub
    [1] trace sub
    (dbx) run
    calling sub(s = "hello", a = -1, k = delete) from function main
    returning "hello" from sub
  7. 프로그램이 지정된 소스 행에 도달할 때 Expression의 값을 인쇄할 수 있습니다. 행 번호 및 파일 이름은 인쇄되지만, 소스 행은 인쇄되지 않습니다. 예를 들어 다음과 같습니다.
    (dbx) trace x*17 at "hellosub.c":8 if (x > 0)
    [1] trace x*17 at "hellosub.c":8 if x > 0
    (dbx) run
    at line 8 in file "hellosub.c": x*17 = 51
     
    (dbx) trace x
    [1] trace x
    initially (at line 4 in "hello.c"):  x = 0
    after line 17 in "hello.c":  x = 3
  8. $t1스레드에 의해 작성된 x 변수에 대한 변경사항을 추적하려면 다음 명령을 입력하십시오.
    (dbx) trace x if ($running_thread == 1)
  9. 모든 모듈의 로드 또는 로드 해제를 추적하려면 다음 명령을 입력하십시오.
    trace on load
  10. Module 모듈의 로드 또는 로드 해제를 추적하려면 다음 명령을 입력하십시오.
    trace on load "Module"
  11. Module 모듈에 있는 Member 멤버의 로드 또는 로드 해제를 추적하려면 다음 명령을 입력하십시오.
    trace on load "Module(Member)"

tracei 부속 명령도 참조하십시오.

tracehwp 부속 명령

tracehwp 주소 크기

tracehwp 부속 명령은 지정된 메모리 영역에 대한 하드웨어 경계점 정지를 설정합니다. dbx 디버그 프로그램은 영역의 컨텐츠가 변경될 때 추적 정보를 인쇄합니다.
주:
  1. tracehwp 부속 명령의 성공은 하드웨어에 달려 있습니다. 이 기능은 POWER630 및 POWER4 이상에서만 사용 가능합니다.
  2. 단일 경계점만 설정할 수 있는 하드웨어 한계의 결과로서, stophwptracehwp를 사용하여 다른 하드웨어 경계점 이벤트를 작성하려고 할 때 활성 경계점 이벤트가 충돌로 작용합니다. 따라서, 새로운 이벤트를 작성하기 전에 이전 이벤트를 삭제해야 합니다. 또한 활성 소프트웨어 경계점(stoptrace 부속 명령의 일부 호출에 의해 작성됨)의 존재가 하드웨어 경계점의 성능 이득을 무효로 만들므로, 이런 유형의 이벤트도 하드웨어 경계점을 작성하기 전에 삭제되어야 하는 충돌로 작용합니다.

  1. 주소 0x200004e8에서 시작하는 4바이트 메모리 영역의 컨텐츠가 변경될 때마다 추적하려면 다음 명령을 입력하십시오.
     tracehwp 0x200004e8 4 

stophwp 부속 명령을 참조하십시오.

tracei 부속 명령

tracei [[주소] [at 주소 | in 프로시저] | 표현식 at 주소] [if 조건]

tracei 부속 명령은 다음과 같은 경우에 추적을 켭니다.

  • Address 플래그가 포함되는 경우 Address 매개변수에 의해 지정된 주소의 컨텐츠가 변합니다.
  • at Address 매개변수가 지정된 경우 Address 에 있는 명령어가 실행됩니다.
  • Procedure 로 지정된 프로시저는 in Procedure 플래그가 포함된 경우 활성 상태입니다.
  • Condition 매개변수에 의해 지정된 조건은 if Condition 플래그가 포함된 경우 true입니다.

플래그

항목 설명
at Address 주소를 지정합니다. 이 주소의 명령어가 실행될 때 추적이 가능합니다.
if 조건 조건을 지정합니다. 이 조건이 부합될 때 추적이 가능합니다.
in Procedure 프로시저를 지정합니다. 이 프로시저가 활동 중일 때 추적이 가능합니다.

  1. 실행되는 각 명령어를 추적하려면 다음 명령을 입력하십시오.
    tracei
  2. 주소 0x100020f0의 명령어가 실행될 때마다 추적하려면 다음 명령을 입력하십시오.
    tracei at 0x100020f0
  3. main 프로시저가 활동 중인 경우 메모리 위치 0x20004020의 컨텐츠가 변할 때마다 추적하려면 다음 명령을 입력하십시오.
    tracei 0x20004020 in main
  4. 0x100020f0 주소에 있는 명령어가 $t4 스레드에 의해 실행될 때마다 추적하려면 다음 명령을 입력하십시오.
    tracei at 0x100020f0 if ($running_thread == 4)

trace 부속 명령을 참조하십시오. 또한 dbx 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서를 사용하여 시스템 레벨에서 디버깅을 참조하십시오.

tskip 부속 명령

tskip [번호]

tskip 부속 명령은 현재 정지점에서부터 실행 중인 스레드의 실행을 계속합니다. Number 매개변수에 의해 지정된 스레드 레벨 중단점의 수가 실행 중 스레드에 대해 생략됩니다. 이 부속 명령은 시스템 범위 스레드에 대해서만 시작될 수 있습니다.

이 조작 동안 다른 모든 스레드가 실행되며, 사용자가 지정한 모든 중단점 및 경계점이 캐치됩니다. 임의의 스레드가 중단점 또는 경계점에 도달하면 실행이 정지할 수 있습니다. 다른 스레드에 대한 이벤트 때문에 tskip 부속 명령에 의해 시작된 실행이 정지할 수 있지만, 이전 스레드에 대해 지정된 tskip 수가 여전히 활동 중이며 tskip 수에 의해 지정되는 스레드 레벨 중단점 수는 프로세스가 계속할 때 해당 스레드에 대해 무시됩니다. 스레드가 종료할 때 그와 연관된 tskip 수가 삭제됩니다.

스레드에 대한 나머지 tskip 수를 보려면 status 부속 명령을 사용하십시오. 스레드에 대한 나머지 tskip 수를 삭제하려면 delete 부속 명령을 사용하십시오.

실행 중 스레드에 대한 현재 정지점부터 시작하여 두 번째 스레드 레벨 중단점을 만날 때까지 실행을 계속하려면 다음을 입력하십시오.
tskip 1

cont 부속 명령을 참조하십시오. 또한 다중 스레드를 포함하는 프로그램 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서을 참조하십시오.

tstep 부속 명령

tstep [번호]

tstep 부속 명령은 실행 중인 스레드의 현재 소스 행부터 시작하여 지정된 수의 소스 행을 실행합니다. Number 매개변수는 tstep 부속 명령이 실행되는 횟수를 지정합니다. Number 매개변수가 지정되지 않으면 tstep 는 한 번만 실행됩니다. 이 부속 명령은 시스템 범위 스레드에서만 시작될 수 있습니다.

모든 스레드는 이 조작 중에 실행됩니다. $hold_next가 설정되는 경우 실행 중 스레드를 제외한 모든 스레드가 보유됩니다.
참고: set 하위 명령의 $stepignore 변수를 사용하여 tstep 하위 명령의 동작을 제어하십시오. $stepignore 변수를 사용하면 tstep 부속 명령이 디버깅 정보를 사용할 수 없는 대형 루틴을 step over할 수 있습니다.

  1. 하나의 소스 행에 대한 실행 중인 스레드의 실행을 계속하려면 다음을 입력하십시오.
    tstep
  2. 5 소스 행에 대한 실행 중 스레드의 실행을 계속하려면 다음을 입력하십시오.
    tstep 5
  3. 예제 코드에 설명된 대로 dbx 프로그램이 printf 함수를 단일 단계로 수행하지 못하게 하려면 다음을 수행하십시오.
    60 printf ("hello world /n");
    다음을 입력하십시오.
    set $stepignore="function"; step

cont 부속 명령, goto 부속 명령, tnext 부속 명령, set 부속 명령 및 tstepi 부속 명령을 참조하십시오. 또한 다중 스레드를 포함하는 프로그램 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서을 참조하십시오.

tstepi 부속 명령

tstepi [번호]

tstepi 부속 명령은 실행 중인 스레드의 현재 명령어부터 시작하여 지정된 수의 명령어를 실행합니다. Number 매개변수는 tstepi 부속 명령이 실행되는 횟수를 지정합니다. Number 매개변수가 지정되지 않으면 tstepi 는 한 번만 실행됩니다. 이 부속 명령은 시스템 범위 스레드에서만 시작될 수 있습니다.

모든 스레드는 이 조작 중에 실행됩니다. $hold_next가 설정되는 경우 실행 중 스레드를 제외한 모든 스레드가 보유됩니다.

  1. 하나의 기계 명령어에 대한 실행 중 스레드의 실행을 계속하려면 다음을 입력하십시오.
    tstepi
  2. 5개 기계 명령어에 대한 실행 중인 스레드의 실행을 계속하려면 다음을 입력하십시오.
    tstepi 5

gotoi 부속 명령, tnexti 부속 명령 및 tstep 부속 명령을 참조하십시오. 또한 다중 스레드를 포함하는 프로그램 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서을 참조하십시오.

tstop 부속 명령

tstop { in 프로시저 | [변수] at SourceLine [ if 조건 ]} [for $tthreadnumber]

tstop 부속 명령은 스레드에 대한 소스 레벨 중단점 정지를 설정하고 지정된 스레드가 중단점에 도달할 때 애플리케이션 프로그램을 정지합니다. 지정된 스레드가 이벤트의 작성과 동일한 시간에 존재해야 합니다. 스레드가 지정되지 않으면 현재 스레드가 사용됩니다. 지정된 스레드는 다음 중 하나가 발생할 때 정지합니다.
  • if Condition 플래그가 사용되고 Condition 이 true입니다.
  • in Procedure 플래그가 사용되고 Procedure 가 호출됩니다.
  • at SourceLine 플래그가 사용되고 SourceLine 행 번호에 도달합니다. SourceLine 변수는 콜론(:) 및 정수가 다음에 오는 파일 이름 문자열로 지정하거나 정수로 지정할 수 있습니다.

스레드 레벨 중단점은 시스템 범위 스레드에 대해서만 설정할 수 있습니다. 스레드 레벨 및 프로세스 레벨 중단점에 동시에 도달할 경우 두 중단점이 모두 처리되고 스레드 레벨 중단점은 이동됩니다. 스레드가 종료되면 그와 연관된 이벤트가 삭제됩니다.

플래그

항목 설명
at SourceLine 행 번호를 지정합니다.
$t의 경우 스레드 번호 스레드 번호를 지정합니다.
if 조건 조건(예: true)을 지정합니다.
in Procedure 호출될 프로시저를 지정합니다.

  1. 스레드 2를 실행하는 동안 func 프로시저의 첫 번째 명령문에서 실행을 중지하려면 다음을 입력하십시오.
    tstop in func for $t2
  2. x 변수의 값이 실행의 행 12에서 변경될 때 현재 스레드 실행을 정지하려면 다음을 입력하십시오.
    tstop x at 12

ttrace 부속 명령을 참조하십시오. 또한 다중 스레드를 포함하는 프로그램 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서을 참조하십시오.

tstophwp 부속 명령

tstophwp 주소 크기 [$t의 경우스레드 번호]

tstophwp 부속 명령은 지정된 메모리 영역에 대한 스레드 레벨 하드웨어 경계점 정지를 설정합니다. 지정된 스레드가 실행되는 동안 영역 내용이 변경되면 프로그램이 정지합니다. 지정된 스레드가 이벤트의 작성과 동일한 시간에 존재해야 합니다. 스레드가 지정되지 않으면 현재 스레드가 사용됩니다. 스레드 레벨 경계점 이벤트는 시스템 범위 스레드에 대해서만 설정할 수 있습니다. 스레드가 종료되면 그와 연관된 이벤트가 삭제됩니다.

주:
  1. tstophwp 부속 명령의 성공 여부는 하드웨어에 따라 다릅니다. 이 기능은 POWER630 및 POWER4 이상에서만 사용 가능합니다.
  2. 단일 감시점만 설정할 수 있는 하드웨어 제한사항의 결과로, 활성 스레드 감시점 이벤트는 tstophwpttracehwp를 사용하여 동일한 스레드에 대해 다른 하드웨어 감시점 이벤트를 작성하려고 시도할 때 충돌로 작동합니다. 이를 방지하려면 새로운 이벤트를 작성하기 전에 이전 이벤트를 삭제해야 합니다. 활성 소프트웨어 감시점 ( stoptrace 부속 명령의 일부 호출로 작성됨) 이 있으면 하드웨어 감시점의 성능 이점을 무효화할 수 있으므로, 충돌을 방지하기 위해 하드웨어 감시점을 작성하기 전에 이러한 유형의 이벤트도 삭제해야 합니다.
  3. 프로세스 레벨 경계점이 존재하는 경우 스레드 레벨 경계점이 없는 스레드는 프로세스 경계점 위치를 감시합니다. 스레드가 스레드 레벨 경계점을 갖는 경우 스레드는 스레드 경계점 위치를 감시합니다.
  4. 스레드 레벨 하드웨어 경계점과 프로세스 레벨 하드웨어 경계점은 함께 존재할 수 있으며 서로 충돌하지 않습니다.
  5. 프로세스 레벨 및 스레드 레벨 경계점이 동일한 주소에 대해 존재하는 경우 프로세스 레벨 경계점 이벤트가 보고됩니다.

플래그

항목 설명
$t의 경우 스레드 번호 스레드 번호를 지정합니다.

스레드 2가 실행 중이고 주소 0x200004e8에서 시작하는 4바이트 메모리 영역의 컨텐츠가 변할 때 프로그램을 정지하려면 다음을 입력하십시오.

tstophwp 0x200004e8 4 for $t2

ttracehwp 부속 명령을 참조하십시오. 또한 다중 스레드를 포함하는 프로그램 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서을 참조하십시오.

tstopi 부속 명령

tstopi { in 프로시저 | [주소] at 주소 [ if 조건 ]} [for $tthreadnumber]

tstopi 부속 명령은 스레드에 대한 명령어 레벨 중단점 정지를 설정합니다. 지정된 스레드가 이벤트의 작성과 동일한 시간에 존재해야 합니다. 스레드가 지정되지 않으면 현재 스레드가 사용됩니다. 지정된 스레드는 다음 중 하나가 발생할 때 정지합니다.
  • if Condition 플래그가 사용되고 Condition 이 true입니다.
  • in Procedure 플래그가 사용되고 Procedure 가 호출됩니다.
  • at Address 플래그가 사용되고 Address 에 도달합니다.

스레드 레벨 중단점은 시스템 범위 스레드에 대해서만 설정할 수 있습니다. 스레드 레벨 및 프로세스 레벨 중단점에 동시에 도달할 경우 두 중단점이 모두 처리되고 스레드 레벨 중단점만 보고됩니다. 스레드가 종료되면 그와 연관된 이벤트가 삭제됩니다.

플래그

항목 설명
at Address 기계 명령어 주소를 지정합니다.
$t의 경우 스레드 번호 스레드 번호를 지정합니다.
if 조건 조건을 지정합니다.
in Procedure 호출될 프로시저를 지정합니다.

  1. 스레드 2 실행 중에 주소 0x100020f0에서 실행을 정지하려면 다음을 입력하십시오.
    tstopi at 0x100020f0 for $t2
  2. 현재 스레드를 실행하는 동안 func 프로시저가 입력될 때 실행을 중지하려면 다음을 입력하십시오.
    tstopi in func

ttracei 부속 명령을 참조하십시오. 또한 다중 스레드를 포함하는 프로그램 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서을 참조하십시오.

ttrace 부속 명령

ttrace {[변수] at SourceLine | 프로시저 } [ if 조건 ] [for $tthreadnumber]

ttrace 부속 명령은 지정된 스레드가 지정된 프로시저, 함수, 소스 행 및 변수에 대해 실행될 때 추적 정보를 인쇄합니다. SourceLine 변수는 콜론(:) 및 정수가 다음에 오는 파일 이름 문자열로 지정하거나 정수로 지정할 수 있습니다. dbx 디버그 프로그램은 각 ttrace 부속 명령과 번호를 연관시킵니다. 이 숫자를 보려면 status 부속 명령을 사용하십시오. 추적을 중단하려면 delete 부속 명령을 사용하십시오. enabledisable 부속 명령을 각각 사용하여 추적을 사용 가능 및 사용 불가능하게 할 수 있습니다.

스레드가 지정되지 않으면 현재 스레드가 사용됩니다. 스레드 레벨 추적은 시스템 범위의 스레드에 대해서만 설정할 수 있습니다. 지정된 스레드가 이벤트의 작성과 동일한 시간에 존재해야 합니다. 스레드가 종료되면 그와 연관된 이벤트가 삭제됩니다.

플래그

항목 설명
at SourceLine 추적 중인 표현식이 있는 소스 행을 지정합니다.
for $t 스레드 번호 스레드 번호를 지정합니다.
if 조건 추적 시작 조건을 지정합니다. Condition이 참인 경우에만 추적이 시작합니다.
in Procedure 추적할 프로시저나 변수를 찾기 위한 프로시저를 지정합니다.

  1. 스레드 2를 실행하는 동안 printf 프로시저에 대한 각 호출을 추적하려면 다음을 입력하십시오.
    ttrace printf for $t2
  2. 현재 스레드가 실행하는 중에 hello.c/ 파일의 행 22의 각 실행을 추적하려면 다음을 입력하십시오.
    ttrace "hello.c":22

ttracei 부속 명령을 참조하십시오. 또한 다중 스레드를 포함하는 프로그램 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서을 참조하십시오.

ttracei 부속 명령

ttracei [주소] at 주소 [if 조건]} [for $tthreadnumber]

ttracei 부속 명령은 다음 중 하나가 발생할 때 지정된 스레드에 대한 추적을 설정합니다.
  • if Condition 플래그가 포함되고 Condition 이 true입니다.
  • at Address 플래그가 지정되고 Address 의 명령어가 실행됩니다.

스레드가 지정되지 않으면 현재 스레드가 사용됩니다. 스레드 레벨 추적은 시스템 범위의 스레드에 대해서만 설정할 수 있습니다. 지정된 스레드가 이벤트의 작성 시간에 존재해야 합니다. 스레드가 종료되면 그와 연관된 이벤트가 삭제됩니다.

플래그

항목 설명
at Address 주소를 지정합니다. 이 주소의 명령어가 실행될 때 추적이 가능합니다.
for $t 스레드 번호 스레드 번호를 지정합니다.
if 조건 조건을 지정합니다. 이 조건이 부합될 때 추적이 가능합니다.

  1. 스레드 3이 실행되는 동안 주소 0x100020f0에서 명령어가 실행될 때마다 추적하려면 다음을 입력하십시오.
    tracei at 0x100020f0 for $t3
  2. 주소 0x100020f0의 명령어가 현재 스레드에 의해 실행될 때마다 추적하려면 다음을 입력하십시오.
    tracei at 0x100020f0 

ttrace 부속 명령을 참조하십시오. 또한 다중 스레드를 포함하는 프로그램 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서을 참조하십시오.

ttracehwp 부속 명령

ttracehwp 주소 크기 [for $tthreadnumber]

ttracehwp 부속 명령은 지정된 메모리 영역에 대한 스레드 레벨 하드웨어 경계점 추적을 설정합니다. dbx 디버그 프로그램은 지정된 스레드를 실행하는 동안 영역의 내용이 변경되면 추적 정보를 인쇄합니다. 지정된 스레드가 이벤트의 작성과 동일한 시간에 존재해야 합니다. 스레드가 지정되지 않으면 현재 스레드가 사용됩니다. 스레드 레벨 경계점 이벤트는 시스템 범위 스레드에 대해서만 설정할 수 있습니다. 스레드가 종료되면 그와 연관된 이벤트가 삭제됩니다.

참고:
  1. ttracehwp 부속 명령의 성공 여부는 하드웨어에 따라 다릅니다. 이 기능은 POWER630 및 POWER4 이상에서만 사용 가능합니다.
  2. 단일 감시점만 설정할 수 있는 하드웨어 제한사항의 결과로, 활성 스레드 감시점 이벤트는 tstophwpttracehwp를 사용하여 동일한 스레드에 대해 다른 하드웨어 감시점 이벤트를 작성하려고 시도할 때 충돌로 작동합니다. 이를 방지하려면 새로운 이벤트를 작성하기 전에 이전 이벤트를 삭제해야 합니다. 활성 소프트웨어 감시점 ( stoptrace 부속 명령의 일부 호출로 작성됨) 이 있으면 하드웨어 감시점의 성능 이점을 무효화할 수 있으므로, 충돌을 방지하기 위해 하드웨어 감시점을 작성하기 전에 이러한 유형의 이벤트도 삭제해야 합니다.
  3. 프로세스 레벨 경계점이 존재하는 경우 스레드 레벨 경계점이 없는 스레드는 프로세스 경계점 위치를 감시합니다. 스레드가 스레드 레벨 경계점을 갖는 경우 스레드는 스레드 경계점 위치를 감시합니다.
  4. 스레드 레벨 하드웨어 경계점과 프로세스 레벨 하드웨어 경계점은 함께 존재할 수 있으며 서로 충돌하지 않습니다.
  5. 프로세스 레벨 및 스레드 레벨 경계점이 동일한 주소에 대해 존재하는 경우 프로세스 레벨 경계점 이벤트가 보고됩니다.

플래그

항목 설명
for $t 스레드 번호 스레드 번호를 지정합니다.

스레드 2를 실행하는 중에 주소 0x200004e8에서 시작하는 4바이트 메모리 영역의 내용이 변할 때마다 추적하려면 다음을 입력하십시오.

ttracehwp 0x200004e8 4 for $t2

tstophwp 부속 명령을 참조하십시오. 또한 다중 스레드를 포함하는 프로그램 디버깅 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서을 참조하십시오.

unalias 부속 명령

unalias 이름

unalias 부속 명령은 Name 매개변수에 의해 지정되는 별명을 제거합니다.

이름 지정된 별명을 제거하려면printx, 다음을 입력하십시오.

unalias printx

alias 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅에서 부속 명령 별명 작성 을 참조하십시오.

unset 부속 명령

unsetName

unset 부속 명령은 Name 매개변수로 지정된 이름과 연관된 dbx 디버그 프로그램 변수를 삭제합니다.

부동 소수점 레지스터의 표시를 금지하는 변수를 삭제하려면 다음을 입력하십시오.

unset $noflregs

set 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅에서 특수 디버깅 변수로 인쇄 출력 변경 을 참조하십시오.

up 부속 명령

up [ 계수 ]

up 부속 명령은 현재 함수를 스택에서 Count 레벨 번호만큼 위로 이동시킵니다. 현재 함수가 이름을 해석하는 데 사용됩니다. Count 매개변수의 디폴트는 1입니다.

  1. 현재 함수를 스택 2 레벨 위로 이동하려면 다음을 입력하십시오.
    up 2
  2. 스택의 현재 함수를 표시하려면 다음을 입력하십시오.
    up 0

down 부속 명령을 참조하십시오. 또한 현재 파일 또는 프로시저 변경, 스택 추적 표시 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서를 참조하십시오.

use 부속 명령

use [{+| 디렉토리 | '['RegularExpression = NewPath']'} ...]

use 부속 명령은 검색할 디렉토리 리스트 및 dbx 디버그 프로그램이 소스 파일을 찾을 때 적용할 경로 맵핑을 설정합니다. 인수 없이 use 부속 명령을 지정하면 검색할 디렉토리의 현재 리스트와 적용될 경로 맵핑이 표시됩니다.

@(at 기호)는 dbx 프로그램이 오브젝트 파일(있는 경우)에 있는 전체 경로 이름 정보를 찾도록 하는 특수 디렉토리입니다. 검색할 상대 디렉토리 @가 있는 경우 다음을 사용해야 합니다../@입력하십시오.

use 부속 명령은 +(더하기 부호)를 사용하여 검색될 디렉토리의 리스트에 추가 디렉토리나 맵핑을 추가합니다. +use 부속 명령에 입력으로 지정될 때 디렉토리 및 맵핑의 현재 리스트를 나타냅니다. 현재 리스트의 끝에 디렉토리 또는 맵핑을 추가하려면, +가 새 디렉토리나 맵핑 앞에 지정되어야 합니다. 디렉토리를 현재 리스트의 시작에 추가하려면 +가 새 디렉토리 또는 맵핑 뒤에 지정되어야 합니다. 이름이+인 디렉토리가 있는 경우 디렉토리의 전체 경로 이름을 지정하십시오 (예: ./+ 또는 /tmp/+).

use 부속 명령은 [](대괄호)로 묶인 문자열을 해석합니다. 이 문자열에는 경로 맵핑으로 =(등호)가 있습니다. 이들 경로 맵핑은 특수 @ 디렉토리와 함께 사용됩니다. 소스 파일의 전체 디렉토리 구조가 컴파일 후에 재배치되는 경우에 사용자가 소스 파일 위치를 표현하기가 더 쉽게 만듭니다.

디버깅 중 소스 파일을 찾을 때 다음 규칙이 적용됩니다.
  • 리스트의 디렉토리는 지정된 순서대로 평가됩니다.
  • 리스트에 있는 디렉토리의 평가 시에, 해당 디렉토리가 지정된 파일에 대해 검색됩니다. 파일이 디렉토리에 있고 읽기 가능하면 이 파일이 사용됩니다.
  • 특수 @ 디렉토리의 평가 시에, 하나 이상의 경로 맵핑이 지정될 때 경로 맵핑의 RegularExpression 부분이 오브젝트 파일에 있는 전체 경로 이름 정보의 처음 n 문자와 일치하며 경로 맵핑의 NewPath 부분의 대체가 읽을 수 있는 파일을 생성하는 경우 이 파일이 사용됩니다.
  • 특수 @ 디렉토리의 평가 시에, 경로 맵핑이 지정되지 않거나 일치하는 것이 없을 때 전체 경로 이름 정보에 대응하는 디렉토리가 검색됩니다. 파일이 디렉토리에 있고 읽기 가능하면 이 파일이 사용됩니다.
  • 둘 이상의 경로 맵핑이 읽기 가능한 파일을 생성하는 경우, RegularExpression 이 대부분의 문자 (1 ... n)와 일치하는(즉, 가장 특정한) 경로 맵핑이 적용되고 결과 파일이 사용됩니다.
  • 둘 이상의 경로 맵핑에서 읽기 가능 파일을 생성하고 각 경로 맵핑의 특수성이 동일할 경우, 리스트의 맨 앞에 가까운 경로 맵핑이 적용되고 해당 결과 파일이 사용됩니다.
주: 특수 @ 디렉토리가 목록의 구성원이 아닌 경우 지정할 수 있는 경로 맵핑은 무시됩니다.

  1. 검색될 디렉토리의 리스트를 현재 디렉토리(.), 상위 디렉토리(..) 및 /tmp 디렉토리로 변경하려면 다음을 입력하십시오.
    use . .. /tmp
  2. 검색될 디렉토리의 리스트를 현재 디렉토리(.), 소스 파일이 컴파일 시에 위치했던 디렉토리(@) 및 ../source 디렉토리로 변경하려면 다음을 입력하십시오.
    use . @ ../source
  3. /tmp2 디렉토리를 검색될 디렉토리의 리스트에 추가하려면 다음을 입력하십시오.
    use + /tmp2
  4. /tmp3 디렉토리를 검색할 디렉토리 리스트의 시작에 추가하려면 다음을 입력하십시오.
    use /tmp3 +
  5. 전체 경로 이름 정보가 /home/developer로 시작하는 소스 파일이 현재 /mnt에 있음을 표시하려면 다음을 입력하십시오.
    use + [/home/developer=/mnt]
  6. dbx 프로그램이 먼저 /latest에서 찾은 후 파일이 해당 위치에 없을 경우 /stable에서 /home/developer로 시작하는 전체 경로 이름 정보를 갖는 파일을 찾도록 지시하려면 다음을 입력하십시오.
    use + [/home/developer=/latest] [/home/developer=/stable]

또한 edit 부속 명령 및 list 부속 명령을 참조하십시오.

whatis 부속 명령

whatisName

whatis 부속 명령은 Name의 선언을 표시하는데, Name 매개변수는 블록 이름으로 선택적으로 규정되는 변수, 프로시저 또는 함수 이름을 지정합니다.

주: dbx 디버그 프로그램을 실행하는 동안에만 whatis 부속 명령을 사용하십시오.

  1. 다음의 선언을 표시하려면x다음을 입력하십시오.
    whatis x
  2. 다음의 선언을 표시하려면main다음을 입력하십시오.
    whatis main
  3. 다음의 선언을 표시하려면x변수main함수, 입력:
    whatis main.x
  4. 열거, 구조 또는 유니온 태그의 선언을 인쇄하려면 다음을 사용하십시오.$$TagName:
    (dbx) whatis $$status
    enum $$status { run, create, delete, suspend };

where 부속 명령

where [ all | $tthreadumber [(startframe endframe)] ...] [ startframe endframe ] [ >파일 ]

where 부속 명령은 프레임 번호 startframe부터 endframe까지와 연관된 활성 프로시저 및 함수의 리스트를 표시합니다. 누적 스택의 번호 지정은 현재 활성 함수 스택 프레임(항상 0으로 번호 지정됨)에서 시작합니다. n 개의 프레임이 있는 경우 main 기능의 프레임에 n-1번호가 지정됩니다. >File 플래그를 사용하여 이 부속 명령의 출력을 지정된 파일로 재지정할 수 있습니다.

멀티스레드 환경에서 all 옵션은 모든 사용 가능한 스레드에 대한 스택 세부사항을 표시합니다. 개별 스레드의 스택 세부사항은 where 부속 명령과 함께 스레드 번호를 지정하여 표시할 수 있습니다. 개별 스레드의 시작 및 종료 프레임이 지정되지 않은 경우, 글로벌 시작 및 종료 프레임 번호별로 스택 프레임이 표시됩니다. 옵션이 없는 명령은 현재 스레드의 스택 프레임을 표시합니다.

플래그 지정

항목 설명
>파일 출력을 지정된 파일로 방향 재지정합니다.

frame 부속 명령, up 부속 명령 및 down 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅에 있는 스택 추적 표시 를 참조하십시오.

  1. 모든 스레드의 스택 세부사항을 표시하려면 다음을 입력하십시오.
    where all
  2. 스레드 $t1, $t2 및 $t3의 스택 세부사항을 표시하려면 다음을 입력하십시오.
    where $t1 $t2 $t3
  3. 스택 프레임 2 - 3을 갖는 스레드 $t2 및 스택 프레임 1 - 4를 갖는 $t1 및 $t3 모두의 스택 세부사항을 표시하려면 다음을 입력하십시오.
    where $t1 $t2(2 3) $t3 1 4

frame 부속 명령, up 부속 명령 및 down 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅에 있는 스택 추적 표시 를 참조하십시오.

whereis 부속 명령

whereisIdentifier

whereis 부속 명령은 이름이 지정된 ID와 일치하는 모든 기호의 전체 규정을 표시합니다. 기호가 인쇄되는 순서는 중요하지 않습니다.

이름 지정된 모든 기호의 규정된 이름을 표시하려면 다음을 수행하십시오.x, 다음을 입력하십시오.

whereis x

which 부속 명령도 참조하십시오.

which 부속 명령

whichIdentifier

which 부속 명령은 ID의 전체 규정을 표시합니다. 전체 규정은 ID가 연관된 외부 블록의 리스트로 구성됩니다.

전체 자격을 표시하려면 다음을 수행하십시오.x기호, 입력:

which x

whereis 부속 명령을 참조하십시오. 또한 일반 프로그래밍 개념: 프로그램 작성 및 디버깅 에서이름 범위 지정 을 참조하십시오.

파일

항목 설명
a.out 오브젝트 코드를 포함하고 있는 오브젝트 파일입니다.
core 코어 덤프를 포함합니다.
.dbxinit 초기화 명령을 포함합니다.

트랜잭션 메모리를 사용하는 애플리케이션 디버깅

트랜잭션 메모리(TM)를 사용하는 애플리케이션의 경우, 가장 신뢰할 수 있는 디버깅 지원은 트랜잭션 예외 및 요약 레지스터($texasr), 트랜잭션 실패 처리기 주소 레지스터($tfhar) 및 트랜잭션 실패 명령어 주소 레지스터($tfiar) 변수입니다.

$texasr, $tfhar$tfiar 변수는 print 부속 명령을 사용하여 표시할 수 있는데, $iar 변수 표시와 유사합니다. 그러나 assign 부속 명령을 사용하여 이들 레지스터의 값을 조작할 수 없습니다.

$tfhar$tfiar 변수에는 트랜잭션 실패에 있는 디버그된 텍스트 세그먼트의 명령어 주소를 포함합니다. $iar 변수와 유사하게, $tfhar$tfiar 레지스터 변수의 두 개의 가장 중요한 비트가 보존되며 이들 레지스터 변수에서 주소를 읽기 위해 고려될 수 없습니다.
참고: list 하위 명령에서 $tfiar$tfhar 레지스터 변수를 사용하는 경우, dbx 명령은 이러한 레지스터 변수의 컨텐츠에서 가장 중요한 두 개의 비트를 제외한 후 주소를 페치합니다.
(dbx) list at $tfiar
또는
(dbx) list at $tfhar

트랜잭션 실패의 원인은 $texasr 변수를 사용하여 판별할 수 있습니다. tm_status 부속 명령은 트랜잭션 실패의 원인 및 특성을 해석합니다.

dbx 명령은 트랜잭션의 발생을 모니터하고 뒤따르는 일련의 메시지를 통해 트랜잭션 실패의 원인을 표시합니다. 이런 뒤따르는 메시지는 run 부속 명령, rerun 부속 명령 또는 continue 부속 명령을 실행한 후에 표시됩니다.

  • Process {PID} may have failed a transaction - $texasr, $tfiar, $tfhar are valid and may be inspected
  • Process {PID} may have performed a transaction - $texasr, $tfiar, $tfhar, are valid and may be inspected

    이 메시지는 $trace_good_transaction 내부 변수가 설정되었을 때만 표시됩니다.

  • Process {PID} is in Transactional State – debugging efforts through dbx may result in repeated transaction failure or undefined behavior
  • Process {PID} is in Suspended State – debugging efforts through dbx may result in repeated transaction failure or undefined behavior

여기서 PID는 디버그되는 프로세스의 프로세스 ID입니다.