| HOME / 정보공유 / AIX 명령어 모음

dbx
dbx dbx 명령 목적 디버그할 환경을 제공하고 프로그램을 수행합니다. 구문
dbx [ -a ProcessID ] [ -c CommandFile ] [ -d NestingDepth ] [ -I Directory ] [ -E DebugEnvironment ] [ -k ] [ -u ] [ -F ] [ -r ] [ -x ] [ ObjectFile [ CoreFile ] ]
설명
dbx 명령은 C, C++, Pascal 및 FORTRAN 프로그램에 대한 디버그를 제공하여, 사용자가 다음과 같은 작업을 수행할 수 있도록 합니다.
오브젝트 및 코어 파일 검사.
프로그램 실행을 위한 제어 환경 제공.
선택한 문장에 중단점을 설정하거나 한 번에 한 행씩 프로그램 실행.
변수를 사용하여 디버그한 후 올바른 형식으로 표시.
ObjectFile 매개변수는 컴파일러가 만들어 내는 오브젝트(실행 가능) 파일입니다. dbx 명령에 필요한 정보를 만들기 위해 프로그램 컴파일시 -g(기호 테이블 작성) 플래그를 사용합니다.
주: 오브젝트 파일을 컴파일할 경우 cc 명령의 -g 플래그를 사용해야 합니다. -g 플래그를 사용하지 않거나 strip 명령으로 xcoff 파일에서 기호 참조가 제거된 경우, dbx 명령의 사용 범위는 제한됩니다.
-c 플래그를 지정하지 않으면 dbx 명령은 사용자의 $HOME 디렉토리의 .dbxinit 파일을 검사합니다. 그런 다음, 사용자의 현재 디렉토리에서 .dbxinit 파일을 검사합니다. .dbxinit 파일이 현재 디렉토리에 존재하면, 이 파일이 사용자의 $HOME 디렉토리에 있는 .dbxinit 파일을 대체합니다. .dbxinit 파일이 사용자의 $HOME 디렉토리 또는 현재 디렉토리에 존재하면, 디버그 세션이 시작될 때 이 파일의 부속 명령이 실행됩니다. 편집기를 사용하여 .dbxinit 파일을 작성하십시오.
ObjectFile을 지정하지 않으면, dbx는 디버그할 오브젝트 파일 이름을 요청합니다. 디폴트는 a.out입니다. 코어 파일이 현재 디렉토리에 존재하거나 CoreFile 매개변수가 지정되어 있으면, dbx는 프로그램에 이상이 있는 위치를 보고합니다. 코어 이미지에 보유된 변수, 레지스터 및 메모리는 ObjectFile의 실행이 시작될 때까지 검사되어 집니다. 그 시점에 dbx 디버그 프로그램은 명령을 위한 프롬프트를 리턴합니다.
표현식 처리
dbx 프로그램은 광범위한 표현식을 사용합니다. dbx 디버그 프로그램에 C 및 Pascal 구문의 공통적인 기능의 일부와, 여러 가지 FORTRAN 확장자를 가진 표현식을 지정할 수 있습니다.
디버그 프로그램에서 자주 사용되는 연산자는 다음과 같습니다.
* 또는 ^ 간접 선언이나 포인터 참조를 표시합니다.
[ ] 또는 ( ) 첨자 배열 표현식을 표시합니다.
. 포인터 및 구조체와 함께 이 필드 참조 연산자를 사용합니다. 이것은 C 연산자인 ->(화살표)를 사용하지 않고도 가능합니다.
& 변수 주소를 알 수 있습니다.
.. 배열의 하위 섹션을 지정할 때 상하한을 구분합니다. 예제 : n[1..4].
디버그 프로그램에서 사용되는 연산자 유형은 다음과 같습니다.
대수표현식 =, -, *, /(부동소수의 나눗셈), div(정수의 나눗셈), mod, exp(지수연산)
비트 단위 연산 -, I, bitand, xor, ~. <<, >>
논리적 or, and, not, II, &&
비교 <, >, <=, >=, < > 또는 !=, = 또는 ==
기타 (유형 이름), 크기
논리적 표현식과 비교 표현식이 정지 및 추적의 조건으로 허용됩니다.
표현식 유형은 검사되어 집니다. 사용자는 표현식의 이름을 변경하거나 캐스팅 연산자를 사용하여 표현식 유형을 대체합니다. 이름 바꾸기의 세 가지 양식은 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와 같은 편집 기능을 제공하는 반면, emacs 모드는 emacs와 유사한 제어를 제공합니다.
이 기능은 dbx 부속 명령인 set -o 또는 set edit를 사용하여 설정될 수 있습니다. vi 방식의 명령행 편집 기능을 사용하기 위해서는, 부속 명령 set edit vi 또는 set -o vi를 입력하십시오.
EDITOR 환경 변수를 사용하여 편집 모드를 설정할 수도 있습니다.
dbx 명령은 입력된 명령을 .dbxhistory 파일에 저장합니다. DBXHISTFILE 환경 변수가 설정되지 않은 경우, 기록을 위해 사용되는 파일은 $HOME/.dbxhistory입니다.
디폴트로, dbx는 최근에 입력된 128개의 명령 텍스트를 저장합니다. DBXHISTSIZE 환경 변수는 이 한계를 늘리는데 사용될 수 있습니다.
플래그
-a ProcessID 디버그 프로그램을 수행 중인 프로세스에 연결합니다. 디버그 프로그램을 연결하려면, 이 프로세스에 대해 kill 명령을 사용할 수 있는 권한이 있어야 합니다. 프로세스 ID를 판별하려면 ps 명령을 사용하십시오. 사용권한이 있으면, dbx 프로그램은 프로세스를 인터럽트하고, 오브젝트 파일의 전체 이름을 판별하며, 기호 정보를 읽고, 명령을 입력할 수 있는 프롬프트를 처리합니다.
-c CommandFile 표준 입력으로부터 읽기 전에 파일에 있는 dbx 부속 명령을 수행합니다. $HOME 디렉토리에 지정된 파일을 먼저 처리한 다음, 현재 디렉토리에 있는 파일을 처리합니다. 현재 디렉토리에 있는 명령 파일이 $HOME 디렉토리에 있는 명령 파일보다 우선적으로 처리됩니다. 지정된 파일이 $HOME 디렉토리 또는 현재 디렉토리에 존재하지 않으면, 경고 메세지가 표시됩니다. source 부속 명령은 dbx 프로그램이 시작될 때 한 번 사용됩니다.
-d NestingDepth 프로그램 블록의 중첩 한계를 설정합니다. 디폴트 중첩 행 수는 25입니다.
-E DebugEnvironment 디버그 프로그램에 대한 환경 변수를 지정합니다.
-F 레이지 읽기 모드를 해제하고 dbx 명령에서 시작 시 모든 기호를 읽게 하는데 사용할 수 있습니다. 디폴트로, 레이지(lazy) 읽기 모드는 온(on) 상태입니다. 이는 dbx 세션을 초기화하는 데 필요한 기호 테이블 정보만을 읽습니다. 이 모드에서, dbx는 기호 정보를 읽지 않은 국지 변수 및 유형은 읽지 않습니다. 따라서, whereis i와 같은 명령은 각 함수 내의 국지 변수 i의 모든 경우에 대해서 보여줄 수는 없습니다.
-I Directory (대문자 i) 소스 파일을 탐색한 디렉토리 목록의 Directory 변수에서 지정한 디렉토리가 포함됩니다. 디폴트는 다음 디렉토리에서 소스 파일을 찾는 것입니다.
컴파일되었을 때 소스 파일이 위치한 디렉토리. 이 디렉토리는 컴파일러가 오브젝트의 소스 경로에 있을 경우에만 찾을 수 있습니다.
현재 디렉토리
프로그램이 현재 위치한 디렉토리.
-k 메모리 주소를 대응시킵니다. 커널 디버깅에 사용될 수 있습니다.
-r 즉시 오브젝트 파일을 실행합니다. 성공적으로 종료되면, dbx 디버그 프로그램이 종료됩니다. 그렇지 않으면, 디버그 프로그램으로 들어가게 되고 종료되어진 원인을 보여줍니다.
주: -r을 지정하지 않으면, dbx 명령은 사용자가 명령을 입력하도록 프롬프트를 대기시킵니다.
-u dbx 명령은 파일 이름 기호 앞에 @(at 기호)를 붙입니다. 이 플래그는 모호한 기호 이름이 생기는 것을 방지해 줍니다.
-x dbx 명령이 FORTRAN 소스 코드에서 발생한 기호로부터 _(뒤에 붙은 밑줄) 문자를 삭제하지 못하도록 합니다. 이 플래그를 사용하면 dbx에서 밑줄친 문자를 제외하고 동일한 기호(예제: xxx 및 xxx_)를 구분할 수 있습니다.
예제
다음 예제는 프로세스와 동시에 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
이 예제는 프로세스에 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를 연결합니다.
dbx를 looper에 연결하려면 프로세스 ID를 확인해야 합니다. 백그라운드 프로세스로서 looper를 수행하지 않았으면, 다른 Xwindow를 열어 두어야 합니다. 이 Xwindow 창에서, 다음을 입력하십시오.
ps -u UserID
여기서 UserID는 로그인 ID를 말합니다. 사용자에게 속하는 사용 중인 모든 프로세스는 다음과 같이 표시됩니다.
PID TTY TIME COMMAND
68 console 0:04 sh
467 lft3 10:48 looper
이 예제에서 looper와 관련된 프로세스 ID는 467입니다.
dbx를 looper에 연결하려면 다음과 같이 입력하십시오.
$ 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에 의해 시작된 것처럼 지금 프로세스를 조회하고 디버그할 수 있습니다.
실행 파일인 objefile의 소스 파일을 탐색하기 위한 디렉토리 리스트에 디렉토리를 추가하려면, 다음과 같이 입력하십시오.
$dbx -I /home/user/src -I /home/group/src
objfile
dbx를 시작하면 use 부속 명령을 이 기능에 사용할 수 있습니다. -I 플래그가 리스트에 디렉토리를 추가하는 것과는 달리 use 명령은 디렉토리 리스트를 재설정합니다.
-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 플래그는 사용자가 코어 이미지를 가지고 있지 않더라도 메모리에서 사용자의 프로세스 상태를 검사할 수 있도록 합니다.
디버그 프로그램에 대한 환경 변수를 지정하려면, 다음을 입력하십시오.
dbx -E LIBPATH=/home/user/lib -E LANG=Ja_JP objfile
dbx 부속 명령
주: 부속 명령은 dbx 디버그 프로그램이 수행 중일 때만 사용할 수 있습니다.
/ 패턴의 현재 소스 파일에서 앞쪽으로 탐색합니다.
? 특정 패턴에 대해 현재 소스 파일의 거꾸로 방향으로 탐색합니다.
alias dbx 부속 명령에 대한 별명을 작성합니다.
assign 변수에 값을 지정합니다.
attribute 전체 또는 선택된 속성 오브젝트에 관한 정보를 표시합니다.
call 이름붙여진 프로시저 또는 기능과 관련된 오브젝트 코드를 수행합니다.
case dbx 디버그 프로그램이 기호를 해석하는 방법을 변경합니다.
catch 신호가 응용프로그램으로 보내지기 전에 신호의 트랩을 시작합니다.
clear 정해진 소스 행에서 정지점을 전부 제거합니다.
cleari 특정 주소에 지정되어 있는 중단점을 전부 제거합니다.
condition 전체 또는 선택된 조건 변수에 관한 정보를 표시합니다.
cont 프로그램이 종료되거나 다른 중단점과 만나게 될 때까지 현재의 정지 지점에서 응용프로그램 실행을 계속합니다.
delete 지정된 이벤트 숫자에 해당하는 추적과 정지를 제거합니다.
detach 응용프로그램을 계속 실행하고 디버그 프로그램을 종료합니다.
display memory 메모리 내용을 표시합니다.
down 스택 아래로 현재 기능을 이동합니다.
dump 지정된 프로시저에 있는 변수 이름과 값을 표시합니다.
edit 지정된 파일에서 편집기를 시작합니다.
file 현재의 소스 파일을 지정된 파일로 변경합니다.
func 현재의 기능을 지정된 프로시저나 기능으로 변경합니다.
goto 지정된 소스 행이 다음 수행 행이 되도록 합니다.
gotoi 프로그램 계수기 주소를 변경합니다.
help dbx 부속 명령이나 주제에 대한 도움말 정보를 표시합니다.
ignore 신호가 응용프로그램으로 보내지기 전에 신호 트랩을 정지합니다.
list 현재 소스 파일의 행을 표시합니다.
listi 응용프로그램으로부터 명령어를 나열합니다.
map 응용프로그램의 로드 특성에 관한 정보를 표시합니다.
move 다음 행이 표시되도록 변경합니다.
multproc 다중 프로세스 디버깅을 사용 가능하게 하거나 사용 불가능하게 합니다.
mutex 전체 또는 선택된 mutexes에 관한 정보를 표시합니다.
next 다음 소스 행까지 응용프로그램을 수행합니다.
nexti 다음 기계 명령어까지 응용프로그램을 수행합니다.
print 표현식 값을 인쇄하거나 프로시저를 수행하고, 그 프로시저의 리턴 코드를 인쇄합니다.
prompt dbx 명령 프롬프트를 변경합니다.
quit dbx 디버그 프로그램을 정지합니다.
registers 모든 범용 레지스터, 시스템 제어 레지스터, 부동소수점 레지스터, 현재 명령어 레지스터의 값을 표시합니다.
rerun 이전 인수로 응용프로그램을 실행하기 시작합니다.
return 지정된 프로시저로 복귀할 때까지 응용프로그램 수행을 계속합니다.
rwlock Rwlocks에 대한 정보를 표시합니다.
run 응용프로그램 수행을 시작합니다.
screen dbx 명령과의 상호작용을 위해 Xwindow를 엽니다.
set dbx 디버그 프로그램 변수 값을 정의합니다.
sh 명령을 실행할 쉘로 전달합니다.
skip 현재의 정지 지점에서 응용프로그램 수행을 계속합니다.
source 파일로부터 dbx 부속 명령을 읽어들입니다.
status 사용 중인 trace와 stop 부속 명령을 표시합니다.
step 하나의 소스 행을 수행합니다.
stepi 하나의 기계 명령어를 수행합니다.
stop 응용프로그램 수행을 정지합니다.
stopi 지정된 위치에 정지를 설정합니다.
thread 스레드를 표시하고 제어합니다.
trace 추적 정보를 인쇄합니다.
tracei 추적을 실행합니다.
unalias 별명을 제거합니다.
unset 변수를 삭제합니다.
up 스택 위로 현재 기능을 이동합니다.
use 소스 파일을 찾을 때 디렉토리 리스트를 찾도록 설정합니다.
whatis 응용프로그램 구성요소 선언을 표시합니다.
where 사용 중인 프로시저와 함수 리스트를 표시합니다.
whereis 이름이 지정된 식별자와 일치하는 모든 기호에 대한 전체 조건을 표시합니다.
which 주어진 식별자에 대한 전체 조건을 표시합니다.
/ 부속 명령
/ [ RegularExpression [ / ] ]
/ 부속 명령은 현재 소스 파일에서 앞쪽으로 RegularExpression 매개변수에서 지정한 패턴을 탐색합니다. 인수 없이 / 부속 명령을 입력하면 dbx는 이전 정규식을 파일의 앞쪽으로 탐색합니다. 탐색은 파일의 끝을 만나면 다시 처음부터 탐색하기 시작합니다.
예제
현재 소스 파일에서 12라는 숫자에 대해 앞쪽으로 탐색하려면 다음과 같이 입력하십시오.
/ 12
이전 탐색을 반복하려면, 다음과 같이 입력하십시오.
/
? (탐색) 부속 명령 및 regcmp 서브루틴을 참조하십시오.
? 부속 명령
? [ RegularExpression [ ? ] ]
? 부속 명령은 RegularExpression 매개변수에서 지정한 패턴에 대해 현재 소스 파일의 역방향으로 탐색합니다. 인수 없이 ? 부속 명령을 입력하면 dbx 명령은 이전 정규식을 뒷쪽(역방향)으로 탐색합니다. 탐색은 파일의 끝을 만나면 다시 처음부터 탐색하기 시작합니다.
예제
현재 소스 파일에서 문자 z에 대해 뒤쪽으로 탐색하려면, 다음과 같이 입력하십시오.
?z
이전 탐색을 반복하려면, 다음과 같이 입력하십시오.
?
/ (탐색) 부속 명령 및 regcmp 서브루틴을 참조하십시오.
alias 부속 명령
alias [ Name [ [ (Arglist) ] String | Subcommand ] ]
alias 부속 명령은 dbx 부속 명령에 대한 별명을 작성합니다. Name 매개변수는 작성되고 있는 별명입니다. String 매개변수는 일련의 dbx 부속 명령으로서 이 부속 명령을 실행한 다음 Name으로 참조할 수 있습니다. 매개변수 없이 alias 부속 명령을 사용하면 현재의 모든 별명이 표시됩니다.
예제
rerun의 rr을 대체하려면 다음과 같이 입력하십시오.
alias rr rerun
printandstep을 명령행에 입력할 때마다 두 개의 부속 명령 print n과 step을 실행하려면 다음과 같이 입력하십시오.
alias printandstep "print n; step"
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 Variable=Expression
assign 부속 명령은 Expression 매개변수가 지정한 값을 Variable 매개변수가 지정한 변수에 지정합니다.
예제
5 값을 x 변수에 지정하려면 다음과 같이 입력하십시오.
assign x = 5
변수 y를 변수 x에 지정하려면 다음과 같이 입력하십시오.
assign x = y
문자 값'z'를 변수 z에 지정하려면 다음과 같이 입력하십시오.
assign z = 'z'
부울식 값 false를 논리적 형식 변수 B에 지정하려면 다음과 같이 입력하십시오.
assign B = false
"Hello World" 문자열을 문자 포인터에 지정하려면 다음과 같이 입력하십시오. Y, enter:
assign Y = "Hello World"
유형 검사 기능을 사용하지 않으려면, 다음과 같이 입력하여 dbx 디버그 프로그램 변수 $unsafeassign을 설정하십시오.
set $unsafeassign
Displaying and Modifying Variables을 참조하십시오.
attribute 부속 명령
attribute [ AttributeNumber ... ]
Attribute 부속 명령은 사용자 스레드, mutex 또는 AttributeNumber 매개변수에 의해 정의된 조건 속성 오브젝트에 대한 정보를 표시합니다. 매개변수를 지정하지 않으면, 모든 속성 오브젝트가 나열됩니다.
나열된 각 속성 오브젝트에 다음과 같은 정보가 표시됩니다.
attr $aAttributeNumber 형식으로 속성 오브젝트의 기호 이름을 나타냅니다.
obj_addr 속성 오브젝트의 주소를 나타냅니다.
type 속성 오브젝트의 유형을 나타냅니다. 각각 thr, mutex 또는 사용자 스레드용 cond, mutexes 및 조건 변수 등이 될 수 있습니다.
state 속성 오브젝트 상태를 나타냅니다. valid나 inval이 될 수 있습니다.
stack 스레드 속성 오브젝트의 스택 크기 속성을 나타냅니다.
scope 스레드 속성 오브젝트의 유효범위 속성을 나타냅니다. 이것은 스레드의 경합 유효범위를 결정하고, 자원을 서로 차지하려고 하는 스레드 세트를 지정합니다. 시스템이나 프로세스 경합 유효범위에 대한 값은 sys나 pro가 될 수 있습니다.
prio 스레드 속성 오브젝트의 우선순위 속성을 나타냅니다.
sched 스레드 속성 오브젝트의 스케줄 방식의 속성을 나타냅니다. 이 속성은 스케줄 방식을 제어하는데, fifo, rr(라운드 로빈) 또는 other가 될 수 있습니다.
p-shar mutex나 condition 속성 오브젝트의 프로세스 공유 속성을 나타냅니다. mutex나 condition은 다른 프로세스에 속하는 스레드가 여기에 액세스할 수 있으면, 프로세스를 공유합니다. 값은 yes나 no가 될 수 있습니다.
protocol mutex의 프로토콜 속성을 나타냅니다. 이 속성에서는 스레드 우선순위에서 mutex를 보류하는 효과를 결정합니다. 값은 no_prio, prio 또는 protect가 될 수 있습니다.
주:
dbx 디버그 프로그램의 print 부속 명령은 기호로 된 속성 이름을 인식하며, 해당 오브젝트의 상태를 표시하는 데 사용할 수 있습니다.
사용 가능한 속성은 POSIX 옵션 구현에 따라 달라집니다.
예제
모든 속성에 관한 정보를 나열하려면, 다음과 같이 입력하십시오.
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
속성 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 부속 명령을 참조하십시오.
AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Creating Threads, Using Mutexes 및 Using Condition Variables를 참조하십시오.
call 부속 명령
call Procedure ( [ 매개변수] )
call 부속 명령은 Procedure 매개변수에 지정된 프로시저를 수행합니다. 리턴 코드는 인쇄되지 않습니다. 매개변수를 지정하면 매개변수는 수행 중인 프로시저로 전달됩니다.
예제
dbx를 수행하는 중에 명령을 호출하려면 다음과 같이 입력하십시오.
(dbx) call printf("hello")
hello
printf가 성공적으로 리턴합니다.
case 부속 명령
case [ default | mixed | lower | upper ]
case 부속 명령은 dbx 디버그 프로그램이 기호를 해석하는 방법을 변경합니다. 기호의 디폴트 처리 방법은 현재 언어에 따라 다릅니다. 현재 언어가 C, C++이거나 비정의되지 않았으면, 기호는 대문자로 변환되지 않습니다. 현재 언어가 FORTRAN 또는 Pascal이면, 기호는 소문자로 변환됩니다. 기호가 현재 언어와 일치하지 않는 방법으로 해석되어야 하는 경우, 이 부속 명령을 사용하십시오.
매개변수 없이 case 부속 명령을 입력하면 현재 케이스 모드가 표시됩니다.
플래그
default 현재 언어로 바뀝니다.
mixed 실제 나타나는 대로 기호를 해석합니다.
lower 기호를 소문자로 해석합니다.
upper 기호를 대문자로 해석합니다.
예제
현재 케이스 모드를 표시하려면 다음과 같이 입력하십시오.
case
실제로 나타나는 대로 기호를 해석하도록 dbx를 지시하려면 다음과 같이 입력하십시오.
case mixed
기호를 대문자로 해석하도록 dbx를 지시하려면 다음과 같이 입력하십시오.
case upper
Folding Variables to Lowercase and Uppercase를 참조하십시오.
catch 부속 명령
catch [ SignalNumber | SignalName ]
catch 부속 명령은 신호가 응용프로그램으로 전송되기 전에 지정된 신호 트랩을 시작합니다. 이 부속 명령은 디버그되고 있는 응용프로그램이 인터럽트와 같은 신호를 처리할 때 유용합니다. 트랩될 신호는 각각 SignalNumber 또는 SignalName 매개변수를 사용하여 번호 또는 이름으로 지정할 수 있습니다. 신호 이름은 대소문자를 구별하지 않으며 SIG 접두어는 선택적입니다. SignalNumber 또는 SignalName 매개변수를 지정하지 않으면 기본적으로 SIGHUP, SIGCLD, SIGALARM 및 SIGKILL 신호를 제외한 모든 신호가 트랩됩니다. 아무 인수도 지정하지 않으면, 찾으려고 하는 현재 신호 리스트가 표시됩니다.
예제
dbx에서 트랩할 현재 신호 리스트를 표시하려면 다음과 같이 입력하십시오.
catch
신호 SIGALARM을 트랩하려면 다음과 같이 입력하십시오.
catch SIGALARM
ignore 부속 명령과 Handling Signals를 참조하십시오.
clear 부속 명령
clear SourceLine
clear 부속 명령은 주어진 소스 행에서 모든 정지(stop)를 제거합니다. SourceLine 매개변수는 두 가지 형식으로 지정될 수 있습니다.
정수로 지정
:(콜론)과 정수 앞에 오는 파일 이름 문자열로 지정
예제
19 행에서 중단점 설정을 제거하려면 다음과 같이 입력하십시오.
clear 19
cleari 부속 명령 및 delete 부속 명령. AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Setting and Deleting Breakpoints를 참조하십시오.
cleari 부속 명령
cleariAddress
cleari 부속 명령은 Address 매개변수에서 지정한 주소의 모든 중단점을 지웁니다.
예제
주소 0x100001b4에서 중단점 설정을 제거하려면 다음과 같이 입력하십시오.
cleari 0x100001b4
main() 프로시저 주소에서 중단점 설정을 제거하려면 다음과 같이 입력하십시오.
cleari &main
clear 부속 명령, delete 부속 명령, AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Setting and Deleting Breakpoints를 참조하십시오.
condition 부속 명령
condition [ wait | nowait | ConditionNumber ... ]
condition 부속 명령은 하나 이상의 조건 변수에 대한 정보를 표시합니다. 하나 이상의 ConditionNumber 매개변수가 주어지면, condition 부속 명령은 지정된 조건 변수에 대한 정보를 표시합니다. 플래그나 매개변수를 지정하지 않으면, condition 부속 명령은 모든 조건 변수를 나열합니다.
각 조건에 대해 나열되는 정보는 다음과 같습니다.
cv $cConditionNumber 형식으로 조건 변수의 기호 이름을 나타냅니다.
obj_addr 조건 변수의 메모리 주소를 나타냅니다.
num_wait 조건 변수에서 대기중인 스레드의 갯수를 나타냅니다.
waiters 조건 변수에서 대기중인 사용자 스레드를 나열합니다.
주: dbx 디버그 프로그램의 print 부속 명령은 기호로 된 조건 변수 이름을 인식하며, 해당 오브젝트의 상태를 표시하는 데 사용될 수 있습니다.
플래그
wait 대기중인 스레드가 있는 조건 변수를 표시합니다.
nowait 대기중인 스레드가 없는 조건 변수를 표시합니다.
예제
모든 조건 변수에 관한 정보를 표시하려면 다음과 같이 입력하십시오.
condition
대기중인 스레드가 있는 모든 조건 변수에 관한 정보를 표시하려면 다음과 같이 입력하십시오.
condition wait
조건 변수 3에 관한 정보를 표시하려면 다음과 같이 입력하십시오.
condition 3
출력은 다음과 유사합니다.
cv obj_addr num_wait waiters
$c3 0x20003290 0
attribute 부속 명령, mutex 부속 명령, print 부속 명령 및 thread 부속 명령을 참조하십시오.
또한, AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Using Condition Variables를 참조하십시오.
cont 부속 명령
cont [ SignalNumber | SignalName ]
cont 부속 명령은 프로그램이 종료되거나 다른 중단점에 도달할 때까지 현재 정지점에 있는 응용프로그램을 계속해서 실행합니다. 신호를 지정하면, 프로그램은 SignalNumber 매개변수에 지정된 숫자나 SignalName 매개변수에 지정된 이름에 의해 그 신호를 받은 것으로 간주하고 실행을 계속합니다. 신호 이름은 대소문자를 구분하지 않으며 SIG 접두어는 선택적입니다. 신호가 지정되지 않으면, 프로그램은 중단되지 않았던 것처럼 실행을 계속합니다.
예제
현재 정지점에서 프로그램 실행을 계속하려면 다음을 입력하십시오.
cont
SIGQUIT 신호를 받은 것처럼 프로그램 실행을 계속하려면 다음을 입력하십시오.
cont SIGQUIT
dbx 명령의 detach 부속 명령, dbx 명령의 goto 부속 명령, dbx 명령의 next 부속 명령, dbx 명령의 skip 부속 명령, dbx 명령의 step 부속 명령을 참조하십시오.
delete 부속 명령
delete { Number ... | all }
delete 부속 명령은 응용프로그램에 설명되어 있는 추적 및 정지를 해제합니다. 해제될 추적 및 정지는 Number 매개변수에 의해 지정될 수 있으며, 모든 추적 및 정지는 all 플래그를 사용하여 해제될 수 있습니다. dbx 프로그램별로 추적 및 정지에 연관된 숫자를 표시하려면 status 부속 명령을 사용하십시오.
플래그
all 추적과 정지를 모두 제거합니다.
예제
응용프로그램에서 모든 추적 및 정지를 해제하려면, 다음을 입력하십시오.
delete all
이벤트 번호 4에 대한 추적 및 정지를 해제하려면, 다음을 입력하십시오.
delete 4
clear 부속 명령, cleari 부속 명령, status 부속 명령 및 AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Setting and Deleting Breakpoints를 참조하십시오.
detach 부속 명령
detach [ SignalNumber | SignalName ]
detach 부속 명령은 응용프로그램의 실행을 계속하고 디버그 프로그램을 종료합니다. 신호는 다음의 두 가지 방법 가운데 한가지로 지정될 수 있습니다.
SignalName 매개변수를 사용한 이름
SignalNumber 매개변수를 사용한 숫자
신호 이름은 대소문자를 구분하지 않으며 SIG 접두어는 선택적입니다.
신호를 지정하면, 프로그램은 그 신호를 받은 것으로 간주하고 실행을 계속합니다. 신호를 지정하지 않으면, 프로그램은 정지가 발생하지 않았던 것처럼 실행을 계속합니다.
예제
응용프로그램의 실행을 계속하고 dbx를 종료하려면 다음을 입력하십시오.
detach
응용프로그램에서 SIGREQUEST 신호를 받더라도 dbx를 종료하고 응용 프로그램 실행을 계속하려면 다음과 같이 입력하십시오.
detach SIGREQUEST
Using the dbx Debug Program을 참조하십시오.
display memory 부속 명령
{ Address,Address/ | Address/ [ Count ] } [ Mode ] [ >File ]
display memory 부속 명령에는 명령을 초기화하는 키워드가 없으며 다음과 같은 요인으로 제어되는 메모리의 일부분을 표시합니다.
표시되는 메모리 범위는 다음 중의 하나를 지정하면 제어됩니다.
두 개의 Address 매개변수
또는
시작점을 나타내는 하나의 Address 매개변수와, 그 Address로부터 표시되는 행의 갯수를 결정하는 Count.
앞에 &(앰퍼샌드)를 가진 이름으로 기호 주소를 지정하십시오. 주소는 다른 주소 및 연산자 +(더하기 부호), -(빼기 부호), *로 이루어진 표현식이 될 수 있습니다. 괄호 안에 들어 있는 표현식은 주소로 해석합니다.
메모리를 표시하는 형식은 Mode 매개변수가 제어합니다. Mode 매개변수의 디폴드는 현재 모드입니다. Mode의 초기값은 X입니다.
b 8진수로 바이트를 인쇄합니다.
c 문자로 바이트를 인쇄합니다.
d 십진수로 축약형 단어를 인쇄합니다.
D 십진수로 긴 단어를 인쇄합니다.
f 단일 정밀도의 실수를 인쇄합니다.
g 배정밀도 실수를 인쇄합니다.
h 16진수로 바이트를 인쇄합니다.
i 기계 명령어를 인쇄합니다.
lld 8비트의 부호가 있는 십진수를 인쇄합니다.
llu 8비트의 부호가 없는 십진수를 인쇄합니다.
llx 8비트의 부호가 없는 16진수를 인쇄합니다.
llo 8비트의 부호가 없는 8진수를 인쇄합니다.
o 8진수로 축약형 단어를 인쇄합니다.
O 8진수로 긴 단어를 인쇄합니다.
q 확장된 정밀도를 가진 부동소수점 수를 인쇄합니다.
s 널(null) 바이트로 종료되는 문자열을 인쇄합니다.
x 16진수로 축약형 단어를 인쇄합니다.
X 16진수로 긴 단어를 인쇄합니다.
플래그
>파일 지정된 파일로 출력을 재지정합니다.
예제
주소 0x3fffe460에서 16진수 문자열에 있는 메모리 내용 중 긴 단어 하나를 표시하려면 다음과 같이 입력하십시오.
0x3fffe460 / X
변수 y에서 시작하는 메모리 2 바이트의 내용을 문자로 나타내려면 다음을 입력하십시오.
&y / 2c
FORTRAN 문자열 a_string에서 6-8번째 요소를 표시하려면 다음과 같이 입력하십시오.
&a_string + 5, &a_string + 7/c
AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Memory Address를 참조하십시오.
down 부속 명령
down [ Count ]
down 부속 명령은 현재의 함수를 Count 레벨 번호 아래로 이동시킵니다. 현재 함수는 이름을 분석하는 데 사용됩니다. Count 매개변수에 대한 디폴트는 1입니다.
예제
스택을 한 레벨 아래로 이동하려면 다음과 같이 입력하십시오.
down
스택을 세 레벨 아래로 이동하려면 다음과 같이 입력하십시오.
down 3
up 부속 명령, where 부속 명령 및 AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Displaying a Stack Trace를 참조하십시오.
dump 부속 명령
dump [ Procedure ] [ >File ]
dump 부속 명령은 지정된 프로시저 내의 모든 변수 이름과 값을 표시합니다. Procedure 매개변수는 .(마침표)이며, 모든 사용 중에 있는 변수가 표시됩니다. Procedure 매개변수를 지정하지 않으면, 현재 프로시저가 사용됩니다. >File 플래그를 사용하면 출력은 지정된 파일로 재지정됩니다.
플래그
>파일 지정된 파일로 출력을 재지정합니다.
예제
현재 프로시저에 있는 변수 이름과 값을 표시하려면 다음과 같이 입력하십시오.
dump
add_count 프로시저에 있는 변수 이름과 값을 표시하려면 다음과 같이 입력하십시오.
dump add_count
현재 프로시저에 있는 변수 이름과 값을 var.list 파일로 재지정하려면 다음과 같이 입력하십시오.
dump > var.list
AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Displaying and Modifying Variables를 참조하십시오.
edit 부속 명령
edit [ Procedure | File ]
edit 부속 명령은 지정된 파일에서 편집기를 실행시킵니다. 파일은 File 매개변수 또는 Procedure 매개변수를 지정하여 지정할 수 있으며, 여기서 편집기는 해당 프로시저가 포함되어 있는 파일에서 호출됩니다. 파일을 지정하지 않으면, 현재 소스 파일에서 편집기가 실행됩니다. 디폴트는 vi 편집기입니다. EDITOR 환경 변수를 원하는 편집기의 이름으로 재설정하여 디폴트를 변경할 수 있습니다.
예제
현재 소스 파일에서 편집기를 시작하려면 다음과 같이 입력하십시오.
edit
main.c 파일에서 편집기를 시작하려면 다음과 같이 입력하십시오.
edit main.c
do_count() 프로시저가 포함된 파일에서 편집기를 시작하려면 다음과 같이 입력하십시오.
edit do_count
list 부속 명령, vi 또는 vedit 명령을 참조하십시오. AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Changing the current file or Procedure 및 Displaying the Current File를 참조하십시오.
file 부속 명령
file [ File ]
file 부속 명령은 현재 소스 파일을 File 매개변수에서 지정한 파일로 변경합니다. 그 파일에 쓰지는 않습니다. File 매개변수에 파일에 대한 전체 경로 이름을 지정할 수 있습니다. File 매개변수에 경로가 지정되어 있지 않으면, dbx 프로그램은 사용 경로를 탐색하여 파일을 찾으려고 합니다. File 매개변수를 지정하지 않으면, file 부속 명령은 현재 소스 파일의 이름을 표시합니다. 경로를 알 수 있는 경우, file 부속 명령은 파일의 전체 또는 상대 경로도 표시합니다.
예제
현재 소스 파일을 main.c 파일로 변경하려면 다음과 같이 입력하십시오.
file main.c
현재 소스 파일 이름을 표시하려면, 다음과 같이 입력하십시오.
file
func 부속 명령을 참조하십시오. AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Changing the Current File or Procedure 및 Displaying the Current File을 참조하십시오.
func 부속 명령
func [ Procedure ]
func 부속 명령은 현재 함수를 Procedure 매개변수에서 지정한 프로시저나 함수로 변경합니다. Procedure 매개변수를 지정하지 않으면, 디폴트 현재 함수가 표시됩니다. 현재 기능을 내재적으로 변경하면 현재 소스 파일은 새로운 함수가 포함된 파일로 변경됩니다. 이름 해석에 사용된 현재 유효범위도 변경됩니다.
예제
현재 함수를 do_count 프로시저로 변경하려면 다음과 같이 입력하십시오.
func do_count
현재 함수 이름을 표시하려면, 다음과 같이 입력하십시오.
func
file 부속 명령을 참조하십시오. AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Changing the Current File or Procedure를 참조하십시오.
goto 부속 명령
goto SourceLine
goto 부속 명령은 지정된 소스 행이 다음에 수행되도록 합니다. 일반적으로, 소스 행은 현재 소스 행과 동일한 함수 내에 들어 있어야 합니다. 이 제한사항을 대체하려면 set 부속 명령에 $unsafegoto 플래그를 사용하십시오.
예제
다음 행이 행 6에서 실행되도록 변경하려면 다음과 같이 입력하십시오.
goto 6
cont 부속 명령, gotoi 부속 명령 및 set 부속 명령을 참조하십시오.
gotoi 부속 명령
gotoi Address
gotoi 부속 명령은 프로그램 계수기 주소를 Address 매개변수에서 지정한 주소로 변경합니다.
예제
주소를 0x100002b4로 변경하려면 다음과 같이 입력하십시오.
gotoi 0x100002b4
goto 부속 명령을 참조하십시오.
help 부속 명령
help [ Subcommand | Topic ]
help 부속 명령은 지정한 매개변수에 따라 dbx 부속 명령 또는 주제에 대한 도움말 정보를 표시합니다. help 부속 명령을 Subcommand 매개변수와 함께 입력하면 구문 명령과 지정된 부속 명령에 대한 설명이 표시됩니다. help 부속 명령을 Topic 매개변수와 함께 입력하면 지정된 주제에 대한 설명이 표시됩니다. 다음 주제가 사용 가능합니다.
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 부속 명령을 나열합니다.
예제
사용 가능한 dbx 부속 명령과 주제를 모두 나열하려면 다음과 같이 입력하십시오.
help
dbx 부속 명령 리스트 설명을 표시하려면 다음과 같이 입력하십시오.
help list
dbx 항목 set_variables의 설명을 표시하려면 다음과 같이 입력하십시오.
help set_variables
ignore 부속 명령
ignore [ SignalNumber | SignalName ]
ignore 부속 명령은 신호가 응용프로그램으로 전송되기 전에 지정된 신호의 트랩을 정지합니다. 이 부속 명령은 디버그되고 있는 응용프로그램이 인터럽트와 같은 신호를 처리할 때 유용합니다.
다음 사항이 트랩되는 신호를 지정합니다.
SignalNumber 매개변수를 사용한 숫자
SignalName 매개변수를 사용한 이름
신호 이름은 대소문자를 구분하지 않습니다. SIG 접두어는 생략 가능합니다.
SignalNumber 또는 SignalName 매개변수 중 아무것도 지정하지 않으면, 디폴트로 SIGHUP, SIGCLD, SIGALRM 및 SIGKILL 신호를 제외한 모든 신호가 트랩됩니다. dbx 디버그 프로그램은 디버거 외부의 프로세스에서 생긴 SIGTRAP 신호를 무시할 수 없습니다. 아무 인수도 지정하지 않으면, 현재 무시된 신호의 리스트가 표시됩니다.
예제
dbx가 응용프로그램으로 송신된 제한시간 초과 신호를 무시하도록 하려면 다음과 같이 입력하십시오.
ignore alrm
catch 부속 명령을 참조하십시오. AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Handling Signals를 참조하십시오.
list 부속 명령
list [ Procedure | SourceLine-Expression [ ,SourceLine-Expression ] ]
list 부속 명령은 소스 파일 중 지정된 행을 표시합니다. 표시된 행 수는 두 가지 중 한 가지 방식으로 지정됩니다.
Procedure 매개변수를 사용하여 프로시저를 지정.
이 경우, list 부속 명령은 지정된 프로시저가 시작되기 전에 창의 크기만큼 여러 행을 보여줍니다.
SourceLine-Expression 매개변수를 사용하여 시작 및 종료 소스 행 번호를 지정.
SourceLine-Expression 매개변수는 +(더하기 부호)나 -(빼기 부호), 그리고 정수로 되어 있는 유효 행 번호로 구성되어야 합니다. 또한, $(달러 기호)인 SourceLine을 사용하여 현재 행 번호를 표시하고, @인 SourceLine을 사용하여 나열되는 다음 행 번호를 표시할 수도 있습니다.
그러면 지정된 첫번째 행 번호에서부터 지정된 두 번째 행 번호에 이르기까지 모든 행이 표시됩니다.
두 번째 소스 행이 생략된 경우, 첫번째 행만 출력됩니다.
list 부속 명령이 매개변수 없이 사용되면, 현재 소스 행에서부터 $listwindow에 지정된 행 만큼이 인쇄됩니다.
디폴트로 나열되는 행 번호를 변경하려면 특별한 디버그 프로그램 변수인 $listwindow를 사용자가 원하는 행 번호로 설정하십시오. 처음에는 $listwindow는 10으로 설정됩니다.
예제
현재 파일에서 행 1에서 10까지 나열하려면 다음과 같이 입력하십시오.
list 1,10
main 프로시저 근방의 10 행이나 $listwindow 행을 나열하려면 다음과 같이 입력하십시오.
list main
현재 행 주의의 11행을 나열하려면, 다음과 같이 입력하십시오.
list $-5,$+5
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)
edit 부속 명령, listi 부속 명령 및 move 부속 명령을 참조하십시오. AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Displaying the Current File을 참조하십시오.
listi 부속 명령
listi [ Procedure | at SourceLine | Address [ , Address ] ]
listi 부속 명령은 소스 파일에 있는 명령어 세트를 표시합니다. 표시된 명령은 다음과 같이 지정됩니다.
Procedure 매개변수를 제공하면 listi 부속 명령은 리스트 창이 채워질 때까지 지정한 프로시저의 시작으로부터 명령을 나열합니다.
at SourceLine 플래그를 사용하면 listi 부속 명령은 지정한 소스 행에서 시작하는 명령을 표시하고 리스트 창이 채워질 때까지 계속합니다. SourceLine 변수는 정수 또는 뒤에 콜론(:)과 정수가 붙는 파일 이름 문자열로 지정할 수 있습니다.
Address 매개변수를 사용하여 시작 및 종료 주소를 지정하면 두 주소를 포함하여 그 사이의 모든 명령이 표시됩니다.
listi 부속 명령을 플래그나 매개변수 없이 사용하면, 다음 $listwindow 명령이 표시됩니다. 현재 리스트 창의 크기를 변경하려면, set $listwindow=Value 부속 명령을 사용하십시오.
디어셈블리 모드
dbx 프로그램은 POWER 제품군 또는 POWER PC 구조의 명령을 디어셈블할 수 있습니다. 디폴트 모드에서는 dbx 프로그램이 수행 중인 구조에 대한 명령을 표시합니다.
dbx 명령에 대한 set 부속 명령의 $instructionset 변수와 $mnemonics 변수를 사용하면 기본 디어셈블리 모드를 겹쳐쓸 수 있습니다. 자세한 정보는 dbx 명령의 set 부속 명령을 참조하십시오.
플래그
at SourceLine 나열하기 위해 시작 소스 행을 지정합니다.
예제
다음 10이나, $listwindow, 명령을 나열하려면 다음과 같이 입력하십시오.
listi
소스 행 10에 있는 기계 명령어를 나열하려면 다음과 같이 입력하십시오.
listi at 10
파일 sample.c에 있는 소스 행 5에서 시작하는 기계 명령어를 나열하려면 다음과 같이 입력하십시오.
listi at "sample.c":5
주소 0x10000400와 0x10000420 사이에 있는 명령을 나열하려면 다음과 같이 입력하십시오.
listi 0x10000400, 0x10000420
list 부속 명령과 set 부속 명령을 참조하십시오. AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Debugging at the System Level with dbx를 참조하십시오.
map 부속 명령
map [ > File ]
map 부속 명령은 응용프로그램의 각 로드 부분에 대한 특징을 표시합니다. 이 정보에는 각 로드 모듈의 이름, 텍스트 기점, 텍스트 길이, 데이터 기점 및 데이터 길이가 포함되어 있습니다.
플래그
> File 지정된 파일로 출력을 재지정합니다.
AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Debugging at the Machine Level with dbx를 참조하십시오.
move 부속 명령
moveSourceLine
move 부속 명령은 표시할 다음 행을 SourceLine 매개변수에서 지정한 행으로 변경합니다. 이 부속 명령은 @(at 기호) 변수의 값을 변경합니다.
SourceLine 변수는 :(콜론)과 정수가 뒤에 붙는 파일 이름 문자열로 또는 정수로 지정할 수 있습니다.
예제
나열할 다음 행을 12 행으로 변경하려면 다음과 같이 입력하십시오.
move 12
나열할 다음 행을 sample.c 파일에 있는 5 행으로 변경하려면 다음과 같이 입력하십시오.
move "sample.c":5
list 부속 명령을 참조하십시오. AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Displaying the Current File을 참조하십시오.
multproc 부속 명령
multproc [ on |parent|child| off ]
multproc 부속 명령은 분기 실행(fork)되고 초과 프로세스가 작성되었을 때 dbx 디버그 프로그램의 동작을 지정합니다. on 플래그는 분기의 하위 경로를 디버그하기 위해 새로운 dbx 세션을 작성하도록 지정하는 데 사용됩니다. 원래 dbx는 상위 경로의 디버그를 계속합니다. parent 플래그와 child 플래그를 사용하여 수행해야할 분기의 단일 경로를 지정합니다. off 플래그를 제외한 모든 플래그를 사용하면 dbx는 초과 프로세스를 수행합니다. off 플래그는 다중 프로세스 디버깅을 사용 불가능하게 합니다. 플래그를 지정하지 않으면, multproc 부속 명령은 다중 프로세스 디버깅의 현재 상태를 리턴합니다.
dbx 프로그램은 다중 프로세스 디버깅을 위해 Xwindows를 사용합니다. dbx 프로그램은 다중 프로세스에 필요한 만큼의 창을 엽니다. 각 하위 창의 제목은 서브프로세스의 프로세스 ID(pid)입니다. 프로세스간을 전환하려면, Xwindows 처리 기법을 사용하여 dbx 세션이 표시된 창을 활성화하십시오. 시스템에서 Xwindows를 지원하지 않으면 디버거가 분기될 때 경고 메세지가 발행되고 dbx 프로그램은 상위 프로세스만 디버깅을 계속합니다. 다중 프로세스 디버깅은 다음과 같은 이유로 성공하지 못할 수도 있습니다.
dbx 프로그램이 Xwindows 환경에서 실행되지 않을 경우
Xwindows는 수행되지만 dbx 전역 변수 $xdisplay가 유효한 표시장치 이름으로 설정되지 않은 경우$xdisplay 변수는 쉘 DISPLAY 환경 변수로 초기화됩니다. set Name=Expressiondbx 부속 명령을 사용하여 표시장치 이름을 변경할 수 있습니다.
/tmp 디렉토리에서는 디버깅 프로그램에 대한 읽기나 쓰기 액세스를 허용하지 않습니다. dbx 프로그램은 Xwindow 환경을 제어할 때 이 디렉토리에 적은 공간을 필요로 합니다.
시스템이 새로운 Xwindow를 수용할 자원을 충분히 가지고 있지 못한 경우.
$xdisplay가 원격 표시장치로 설정되면, 사용자는 새로 작성된 Xwindow를 보지 못할 수도 있습니다. $xdisplay 설정이 올바르지 못하면, Xwindows 또는 다른 시스템 자원이 장애의 원인을 알려줍니다.
dbx 프로그램은 서로 다른 장애 유형을 구별하지 못하지만, 부속 명령이 실패했을 때 다음과 같은 메세지를 수신합니다.
Warning: dbx subcommand multiproc fails. dbx
continued with multproc disabled.
새로 작성되는 창을 사용자 정의로 구성하려면 .Xdefaults 파일에 있는 dbx_term 응용프로그램 이름으로 정의할 수 있습니다.
플래그
on 다중 프로세스 디버깅이 가능합니다.
off 다중 프로세스 디버깅이 불가능합니다.
예제
다중 프로세스 디버깅의 현재 상태를 검사하려면, 다음과 같이 입력하십시오.
multproc
다중 프로세스 디버깅을 사용하려면, 다음과 같이 입력하십시오.
multproc on
다중 프로세스 디버깅을 사용 불가능하게 하려면, 다음과 같이 입력하십시오.
multproc off
screen 부속 명령과 분기 실행(fork) 서브루틴을 참조하십시오. AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Debugging Programs Involving Multiple Processes을 참조하십시오.
mutex 부속 명령
mutex [ lock | unlock | thnum | utid | MutexNumber ... ]
mutex 부속 명령은 mutex에 대한 정보를 표시합니다. MutexNumber 매개변수가 제공되면, mutex 부속 명령은 지정된 mutex에 대한 정보를 표시합니다. 플래그나 매개변수를 지정하지 않으면, mutex 부속 명령은 모든 mutex에 대한 정보를 표시합니다.
각 mutex에 나열되는 정보는 다음과 같습니다.
mutex $mMutexNumber 형식으로 mutex의 기호 이름을 나타냅니다.
type mutex의 유형, 즉 non-rec(비재귀), recursi(재귀) 또는 fast를 나타냅니다.
obj_addr mutex의 메모리 주소를 나타냅니다.
lock mutex의 잠금 상태, 즉 mutex가 잠겼으면 예, 잠기지 않았으면 아니오를 나타냅니다.
owner mutex가 잠금 상태인 경우에 mutex를 갖는 사용자 스레드의 기호 이름을 나타냅니다.
blockers 이 mutex 변수에 블록화되어 있는 사용자 스레드를 나열합니다.
주: dbx 디버그 프로그램의 print 부속 명령은 기호로 된 mutex 이름을 인식하며, 해당 오브젝트의 상태를 표시하는 데 사용될 수 있습니다.
플래그
lock 잠금 상태인 mutex에 관한 정보를 표시합니다.
unlock 잠금 상태가 아닌 mutex에 관한 정보를 표시합니다.
thnum 특정 스레드가 보유하는 모든 mutex에 대한 정보를 표시합니다.
utid 사용자 스레드 id가 주어진 사용자 스레드 id와 일치하는 사용자 스레드가 보유하는 모든 mutex에 대한 정보를 표시합니다.
예제
모든 mutex에 관한 정보를 표시하려면 다음과 같이 입력하십시오.
mutex
잠금 상태인 모든 mutex에 관한 정보를 표시하려면 다음과 같이 입력하십시오.
mutex lock
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
thread 1이 보유하는 모든 mutex에 대한 정보를 표시하려면 다음을 입력하십시오.
mutex thnum 1
사용자 스레드 id가 0x0001인 스레드가 보유하는 모든 mutex에 대한 정보를 표시하려면 다음을 입력하십시오.
mutex utid 0x0001
attribute 부속 명령, condition 부속 명령, print 부속 명령, thread 부속 명령을 참조하십시오.
또한, AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Using Mutexes를 참조하십시오.
next 부속 명령
next [ Number ]
next 부속 명령은 소스의 다음 행까지 응용프로그램을 수행합니다. Number 매개변수는 next 부속 명령이 실행될 횟수를 지정합니다. Number 매개변수를 지정하지 않으면, next는 한 번만 수행됩니다.
복수의 스레드 응용프로그램에서 next 부속 명령을 수행하면, 모든 사용자 스레드는 조작 중에 수행되지만 프로그램은 수행중인 스레드가 지정된 소스 행에 도달할 때까지 계속 실행됩니다. 스레드만이 수행되도록 하려면, set 부속 명령을 사용하여 $hold_next 변수를 설정하십시오. 이 변수를 설정하면 수행 중인 스레드는 블록화된 스레드 중 하나가 보유중인 잠금을 기다릴 수 있기 때문에 교착상태(deadlock)가 발생할 수 있습니다.
예제
다음 소스 행까지 실행을 계속하려면 다음과 같이 입력하십시오.
next
현재 소스 행 다음의 세 번째 소스 행까지 실행을 계속하려면 다음과 같이 입력하십시오.
next 3
cont 부속 명령, goto 부속 명령, nexti 부속 명령, set 부속 명령 및 step 부속 명령을 참조하십시오.
nexti 부속 명령
nexti [ Number ]
nexti 부속 명령은 다음 명령까지 응용프로그램을 수행합니다. Number 매개변수는 nexti 부속 명령이 수행될 횟수를 지정합니다. Number 매개변수를 지정하지 않으면, nexti는 한 번만 수행됩니다.
복수의 스레드 응용프로그램에서 nexti 부속 명령을 수행하면, 모든 사용자 스레드는 조작중에 수행되지만 프로그램은 수행중인 스레드가 지정된 명령에 도달할 때가지 계속 실행됩니다. 스레드만이 수행되도록 하려면, set 부속 명령을 사용하여 $hold_next 변수를 설정하십시오. 이 변수를 설정하면 수행 중인 스레드는 블록화된 스레드 중 하나가 보유 중인 잠금을 기다릴 수 있기 때문에 교착상태(deadlock)가 발생할 수 있습니다.
예제
다음 기계 명령어까지 실행을 계속하려면 다음과 같이 입력하십시오.
nexti
현재 기계 명령어 다음의 세 번째 기계 명령어까지 실행을 계속하려면 다음과 같이 입력하십시오.
nexti 3
gotoi 부속 명령, next 부속 명령, set 부속 명령 및 stepi 부속 명령을 참조하십시오. 또한, AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Running a Program at the Machine Level을 참조하십시오.
print 부속 명령
print Expression ...
print Procedure ( [ Parameters ] )
print 부속 명령은 다음 중의 한 가지를 수행합니다.
Expression 매개변수에서 지정한 표현식 리스트의 값을 인쇄합니다.
Procedure 매개변수에서 지정한 프로시저를 실행하고 해당 프로시저의 리턴 값을 인쇄합니다. 매개변수는 프로시저로 전달됩니다.
예제
왼쪽으로 2비트 이동한 x 값과 y 값을 표시하려면 다음과 같이 입력하십시오.
print x, y << 2
인수 0과 함께 sbrk 루틴을 호출하여 리턴 값을 표시하려면 다음과 같이 입력하십시오.
print sbrk(0)
assign 부속 명령, call 부속 명령 및 set 부속 명령을 참조하십시오.
prompt 부속 명령
prompt [ "String" ]
prompt 부속 명령은 dbx 명령 프롬프트를 String 매개변수가 지정한 문자열로 변경합니다.
예제
프롬프트를 dbx>로 변경하려면, 다음과 같이 입력하십시오.
prompt "dbx>"
AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Defining a New dbx Prompt를 참조하십시오.
quit 부속 명령
quit
quit 부속 명령은 dbx 디버깅 세션에서 수행 중인 모든 프로세스를 종료합니다.
detach 부속 명령을 참조하십시오.
registers 부속 명령
registers [ >File ]
registers 부속 명령은 범용 레지스터, 시스템 제어 레지스터, 부동소수점 레지스터, 현재 명령 레지스터를 표시합니다.
범용 레지스터는 $rNumber 변수가 지정하는데, 여기서 Number 매개변수는 레지스터 번호를 나타냅니다.
주: 레지스터 값을 0xdeadbeef 16진수의 값으로 설정할 수 있습니다. 0xdeadbeef 16진 값은 프로세스 초기화시 범용 레지스터에 지정된 초기 값입니다.
부동소수점 레지스터는 $frNumber 변수로 표시됩니다. 디폴트로, 부동소수점 레지스터는 표시되지 않습니다. 부동소수점 레지스터를 표시하려면 unset $noflregs dbx 부속 명령을 사용합니다.
주: 현재 스레드가 커널 모드에 있는 경우에는 registers 부속 명령이 레지스터를 표시할 수 없습니다.
플래그
>파일 지정된 파일로 출력을 재지정합니다.
set 부속 명령과 unset 부속 명령을 참조하십시오. 또한, AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Using Machine Registers을 참조하십시오.
rerun 부속 명령
rerun [ Arguments ] [ < File ] [ > File ] [ > > File ] [ 2> File ] [ 2> > File ] [ >& File ] [ > >& File ]
rerun 부속 명령은 오브젝트 파일의 실행을 시작합니다. Arguments는 명령행 인수로서 전달됩니다. Arguments 매개변수를 지정하지 않으면, 마지막 run 또는 rerun 부속 명령의 인수가 재사용됩니다.
플래그
>File File로 출력을 재지정합니다.
> >File File에 재지정한 출력을 추가합니다.
2>File File로 표준 오류를 재지정합니다.
2> >File File에 재지정한 표준 오류를 추가합니다.
>&File File로 표준 오류 및 출력을 재지정합니다.
> >&File File에 출력 및 표준 오류를 추가합니다.
run 부속 명령을 참조하십시오.
return 부속 명령
return [ Procedure ]
return 부속 명령은 Procedure 매개변수에 지정된 프로시저로 리턴될 때까지 응용프로그램을 실행합니다. Procedure 매개변수를 지정하지 않으면, 현재 프로시저가 리턴할 때 실행이 중단됩니다.
예제
호출 루틴으로 실행을 계속하려면 다음과 같이 입력하십시오.
return
main 프로시저로 계속 실행하려면 다음과 같이 입력하십시오.
return main
rwlock 부속 명령
rwlock [read | write | RwlockNumber....]
rwlock 부속 명령은 rwlocks에 대한 정보를 표시합니다. RwlockNumber 매개변수를 제공하면, rwlock 부속 명령은 지정된 rwlocks에 대한 정보를 표시합니다. 플래그나 매개변수를 지정하지 않으면, rwlock 부속 명령은 모든 rwlocks에 대한 정보를 표시합니다.
각 rwlock에 대해 나열되는 정보는 다음과 같습니다.
rwl $rw RwlockNumber 형식으로 rwlock의 기호 이름을 나타냅니다.
flag_value 플래그 값을 표시합니다.
owner rwlock의 소유자를 나타냅니다.
status rwlock을 보류하고 있는 사용자를 나타냅니다. 값은 읽기(판독기에 의해 보류된 경우), 쓰기(작성자에 의해 보류된 경우), 사용 가능(사용 가능한 경우)입니다.
wsleep[#] 쓰기 상태에 있는 스레드입니다. #는 쓰기 상태에 있는 스레드의 총 수입니다.
rsleep[#] 읽기 상태에 있는 스레드입니다. #는 읽기 상태에 있는 스레드의 총 수입니다.
주: dbx 디버그 프로그램의 print 부속 명령은 기호로 된 rwlock 이름을 인식하며, 해당 오브젝트의 상태를 표시하는 데 사용될 수 있습니다.
플래그
read 상태가 읽기 모드에 있는 모든 rwlocks에 대한 정보를 표시합니다.
write 상태가 쓰기 모드에 있는 모든 rwlocks에 대한 정보를 표시합니다.
예제
모든 rwlocks에 대한 정보를 표시하려면 다음과 같이 입력하십시오.
rwlock
출력은 다음과 유사합니다.
rwl flag_value owner status
$rwl 1 $t1 write
rsleeps[ 0]:
wsleeps[ 0]:
쓰기 모드에 있는 모든 rwlocks에 대한 정보를 표시하려면 다음을 입력하십시오.
rwlock write
출력은 다음과 유사합니다.
rwl flag_value owner status
$rwl 1 $t1 write
rsleeps[ 0]:
wsleeps[ 0]:
attribute 부속 명령, condition 부속 명령, mutex 부속 명령, print 부속 명령 및 thread 부속 명령을 참조하십시오.
run 부속 명령
run [ Arguments ] [ File ] [ > >File ] [ 2>File ] [ 2> >File ] [ >&File ] [ > >&File ]
run 부속 명령은 오브젝트 파일을 시작합니다. Arguments는 명령행 인수로서 전달됩니다.
플래그
>File File로 출력을 재지정합니다.
2>File File로 표준 오류를 재지정합니다.
> >File File에 재지정한 출력을 추가합니다.
2> >File File에 재지정한 표준 오류를 추가합니다.
>&File File로 표준 오류 및 출력을 재지정합니다.
> >&File File에 출력 및 표준 오류를 추가합니다.
예제
blue 및 12 인수를 사용하여 응용프로그램을 수행하려면 다음과 같이 입력하십시오.
run blue 12
rerun 부속 명령을 참조하십시오.
screen 부속 명령
screen
screen 부속 명령은 dbx 명령 상호작용을 위한 Xwindow을 엽니다. 사용자는 프로세스가 시작된 창에서 작업을 계속합니다.
screen 부속 명령은 dbx 디버그 프로그램이 Xwindows 환경에서 수행되는 동안에 수행되어야 합니다. screen 부속 명령이 Xwindow가 아닌 환경에서 실행되면, dbx 프로그램은 경고 메세지를 표시하고 screen 부속 명령이 제공되지 않은 것처럼 디버깅을 계속합니다. screen 부속 명령은 다음과 같은 상황에서는 실행되지 않을 수 있습니다.
dbx 프로그램이 Xwindows 환경에서 실행되지 않을 경우
Xwindows는 수행되지만 dbx 전역 변수 $xdisplay가 유효한 표시장치 이름으로 설정되지 않은 경우 $xdisplay 변수는 DISPLAY 환경 변수로 초기화됩니다. dbx 부속 명령인 set Name=Expression은 표시장치 이름의 값을 변경합니다.
Xwindows가 수행되지만, TERM 환경 변수가 새로운 창을 호출하기 위해 설정한 명령이 유효하지 않은 경우.
/tmp 디렉토리에서는 프로그램에 대한 읽기나 쓰기 액세스를 허용하지 않습니다. dbx 프로그램은 screen 명령이 실행될 때 이 디렉토리에서 작은 공간을 필요로 합니다.
시스템이 새로운 Xwindow를 수용할 만한 자원을 충분히 가지고 있지 못한 경우.
dbx 프로그램은 서로 다른 장애 유형을 구별하지 못하지만, 부속 명령이 실패했을 때 다음과 같은 메세지를 송신합니다.
Warning: dbx subcommand multiproc fails. dbx
continued with multproc disabled.
$xdisplay가 원격 표시장치로 설정되면, 사용자는 새로 작성된 Xwindow를 보지 못할 수도 있습니다. $xdisplay 설정이 올바르지 못하면, Xwindows 또는 다른 시스템 자원이 문제점을 보고합니다.
새로 작성되는 창을 사용자 정의로 구성하려면 .Xdefaults 파일에 있는 dbx_term 응용프로그램 이름으로 정의할 수 있습니다.
예제
dbx 명령 상호작용을 위해 Xwindow를 열려면 다음과 같이 입력하십시오.
screen
AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Separating dbx Output From Program Output 및 AIX 5L Version 5.1 AIXwindows Programming Guide의 AIXwindows overview를 참조하십시오.
set 부속 명령
set [ Variable=Expression ]
set 부속 명령은 dbx 디버그 프로그램 변수의 값을 정의합니다. 값은 Expression 매개변수에 의해 지정되고 프로그램 변수는 Variable 매개변수에 의해 지정됩니다. 변수의 이름은 디버그 중인 프로그램내의 변수 이름과 충돌되어서는 안 됩니다. 변수는 다른 명령 내의 해당 표현식으로 확장됩니다. set 부속 명령이 인수 없이 사용되면, 현재 설정되어 있는 변수가 표시됩니다.
set 부속 명령을 사용하면 다음과 같은 변수가 설정됩니다.
$catchbp 다음 명령이 실행되는 동안 중단점을 찾아냅니다.
$expandunions 상이한 레코드나 공용체의 각 부분에 대한 값을 표시합니다.
$frame 스택 추적 및 국지 변수 액세스를 위해 $frame 값에 의해 지정되어 있는 주소의 스택 프레임을 사용합니다.
$hexchars 16진수 값으로 문자를 출력합니다.
$hexin 16진수로 주소를 해석합니다.
$hexints 16진수 값으로 정수를 출력합니다.
$hexstrings 16진수로 문자 포인터를 인쇄합니다.
$hold_next cont, next, nexti 및 step 부속 명령 중에 수행하는 스레드를 제외한 모든 스레드를 보류합니다. 이 변수를 설정하면 수행 중인 스레드는 블록화된 스레드 중 하나가 보유 중인 잠금을 기다릴 수 있기 때문에 교착상태(deadlock)가 발생할 수 있습니다.
$ignoreload 프로그램에서 load, unload 또는 loadbind 서브루틴을 수행할 경우 정지하지 않습니다.
$instructionset 디폴트 디어셈블리 모드를 대체합니다. 다음 리스트에는 가능한 Expression 매개변수 값이 포함되어 있습니다.
"default"
dbx 프로그램이 수행 중인 구조를 지정합니다.
"com"
POWER PC와 POWER 제품군 아키텍처의 공통 교차 모드에 대한 명령 세트를 지정합니다. dbx 프로그램의 디폴트는 POWER 기반 니모닉(Mnemonic)입니다.
"pwr"
POWER 제품군 구조에 대한 명령 세트와 니모닉(Mnemonic)을 지정합니다.
"pwrx"
POWER 제품군 구조의 POWER2 구현에 대한 명령 세트와 니모닉(Mnemonic)을 지정합니다.
"601"
PowerPC 601 RISC 마이크로 프로세서에 대한 명령 세트와 니모닉(Mnemonic)을 지정합니다.
"603"
PowerPC 603 RISC 마이크로 프로세서에 대한 명령 세트와 니모닉(Mnemonic)을 지정합니다.
"604"
PowerPC 604 RISC 마이크로 프로세서에 대한 명령 세트와 니모닉(Mnemonic)을 지정합니다.
"ppc"
선택사항인 명령을 제외한 POWER 기반 구조에 정의된 명령 세트와 니모닉(Mnemonic)을 지정합니다. 이 명령은 PowerPC 601 RISC 마이크로 프로세서를 제외한 모든 POWER 기반 구현에서 사용할 수 있습니다.
"any"
모든 유효한 POWER 기반 또는 POWER 제품군 명령을 지정합니다. 중첩되는 명령 세트의 경우, 디폴트는 POWER 기반 니모닉입니다.
Expression 매개변수에 대한 값을 설정하지 않은 경우 dbx 프로그램에서는 디폴트 어셈블리 모드를 사용합니다.
$listwindow 함수의 주의에 있는 나열할 행 수와 list 부속 명령이 매개변수 없이 사용될 때 나열할 행 수를 지정합니다. 디폴트는 10행입니다.
$mapaddrs 주소 맵핑을 시작합니다. $mapaddrs를 설정하지 않으면 주소 맵핑이 정지됩니다.
$mnemonics 디어셈블링할 경우 dbx 프로그램에서 사용할 니모닉 세트를 변경합니다.
"default"
지정된 명령 세트와 가장 근접하는 니모닉을 지정합니다.
"pwr"
POWER 제품군 구조에 대한 니모닉을 지정합니다.
"ppc"
선택사항인 명령을 제외한 POWER 기반 구조 책자에 정의된 니모닉을 지정합니다.
Expression 매개변수에 대한 값을 설정하지 않은 경우 dbx 프로그램에서는 지정한 명령 세트와 가장 가깝게 일치하는 니모닉을 사용합니다.
$noargs 부속 명령에서 where, up, down, dump와 같은 인수를 생략합니다.
$noflregs registers 부속 명령에서 부동소수점 레지스터의 표시를 생략합니다.
$octin 8진수로 주소를 해석합니다.
$octints 8진수로 정수를 인쇄합니다.
$pretty print 부속 명령과 함께 pretty printed 형식으로 복합 C 및 C++ 데이터 구조(strut, union, array)를 표시합니다.
"on"
각 행의 값과 값의 정적 유효 범위를 나타내는 들여쓰기를 사용하여 pretty printing을 지정합니다.
"verbose"
각 행의 값과 값의 정적 유효 범위를 나타내는 규정화된 이름을 사용하여 pretty printing을 지정합니다. 규정화된 이름은 값이 연관된 외부 블록을 점으로 구분한 리스트로 구성됩니다.
"off"
Pretty printing을 중단합니다. 이것은 디폴트입니다.
$repeat 입력된 명령이 없으면 이전 명령을 반복합니다.
$sigblock 사용자 프로그램으로 신호를 블록화합니다.
$stepignore 디버깅 정보를 사용할 수 없는 또다른 루틴을 호출하는 소스 행에서 step 명령이 수행될 때 dbx 명령의 작동을 제어합니다. 이 변수는 step 부속 명령이 디버깅 정보를 사용할 수 없는 대형 루틴으로 넘어갈 수 있도록 합니다. 다음 리스트에는 가능한 Expression 매개변수 값이 포함되어 있습니다.
"function"
dbx 명령에 대한 next 부속 명령의 함수를 수행합니다. 이것이 디폴트 값입니다.
"module"
함수가 디버그 정보(예:시스템 라이브러리)를 사용할 수 없는 로드 모듈에 있는 경우, next 부속 명령의 함수를 수행합니다.
"none"
백그라운드에서 소스 정보가 사용 가능한 명령에 도달할 때까지 dbx 명령에 대한 stepi 부속 명령 기능을 수행합니다. 그 시점에서 dbx는 실행이 정지되었던 위치를 표시합니다.
$thcomp $thcomp가 설정되면, th- 스레드 명령에 의해 표시되는 정보는 압축된 형태로 표시됩니다.
$unsafeassign assign 문의 양 면 사이의 엄격한 유형 검사를 중단합니다. $unsafeassign 변수가 설정되었더라도 assign문의 양 끝에는 크기가 다른 기억장치 유형이 포함되지 않을 수 있습니다.
$unsafebounds 배열의 첨자 검사를 중단합니다.
$unsafecall 서브루틴이나 함수 호출을 위한 인수에 대한 엄격한 유형 검사를 중단합니다.
$unsafegoto goto 부속 명령 대상 검사를 중단합니다.
$vardim 경계를 모르는 상태에서 배열을 인쇄하는 경우 사용할 차원 범위를 지정합니다. 디폴트 값은 10입니다.
$xdisplay multproc 부속 명령이나 screen 부속 명령과 함께 사용할 Xwindows 표시장치 이름을 지정합니다. 디폴트 값은 쉘 DISPLAY 변수의 값입니다.
$unsafe 변수는 오류 발견시 dbx 디버그 프로그램의 사용을 제한합니다.
예제
나열될 디폴트 행 번호를 20으로 변경하려면 다음과 같이 입력하십시오.
set $listwindow=20
assign 부속 명령에서 유형 검사를 사용하지 않으려면 다음과 같이 입력하십시오.
set $unsafeassign
PowerPC 601 RISC 마이크로 프로세서에 대한 기계 명령어를 디어셈블하려면 다음과 같이 입력하십시오.
set $instructionset="601"
unset 부속 명령을 참조하십시오. 또한, AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Changing Print Output with Special Debug Program Variables를 참조하십시오.
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 행 편집기의 입력 모드에 놓입니다.
예제
vi 행 편집기를 작동하려면, 다음과 같이 입력하십시오.
set-o vi
또는
set edit vi
sh 부속 명령
sh [ Command ]
sh 부속 명령은 Command 매개변수에 지정된 명령을 실행 쉘로 전달합니다. SHELL 환경 변수는 사용될 쉘을 결정합니다. 디폴트는 sh 쉘입니다. 인수를 지정하지 않으면, 제어가 쉘로 이동됩니다.
예제
ls 명령을 수행하려면 다음과 같이 입력하십시오.
sh ls
쉘로 나가려면 다음과 같이 입력하십시오.
sh
SHELL 환경 변수를 사용하려면 다음과 같이 입력하십시오.
sh echo $SHELL
AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Run Shell command at dbx를 참조하십시오.
skip 부속 명령
skip [ Number ]
skip 부속 명령은 현재 정지점으로부터 응용프로그램의 실행을 계속합니다. Number 매개변수의 값과 동일한 수의 중단점이 생략되고 다음 중단점에 도달하거나 프로그램이 종료될 때 실행이 중단됩니다. Number 매개변수를 지정하지 않으면 디폴트는 1이 됩니다.
예제
두 번째 중단점을 만날 때까지 계속 실행하려면 다음과 같이 입력하십시오.
skip 1
cont 부속 명령도 참조하십시오.
source 부속 명령
sourceFile
source 부속 명령은 File 매개변수에서 지정한 파일로부터 dbx 부속 명령을 읽습니다.
예제
cmdfile 파일에서 dbx 부속 명령을 읽으려면 다음과 같이 입력하십시오.
source cmdfile
AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Reading dbx Subcommands from a File를 참조하십시오.
status 부속 명령
status [ >File ]
status 부속 명령은 현재 사용 중인 trace 및 stop 부속 명령을 표시합니다. > 플래그는 status 부속 명령의 출력을 File 매개변수에서 지정한 파일로 송신합니다.
플래그
>파일 File로 출력을 재지정합니다.
dbx명령의 clear 부속 명령, delete 부속 명령, stop 부속 명령 및 trace 부속 명령을 참조하십시오.
또한, AIX 5L Version 5.1 General Programming Concepts: Writing and Debugging Programs의 Setting and Deleting Breakpoints를 참조하십시오.
step 부속 명령
step [ Number ]
step 부속 명령은 응용프로그램의 소스 행을 수행합니다. Number 매개변수를 사용하여 실행될 행의 수를 지정하십시오. Number 매개변수를 생략하면, 디폴트는 1이 됩니다.
복수 스레드 응용프로그램에서 step 부속 명령을 사용하면, 모든 사용자 스레드는 조작중에 수행되지만 프로그램은 수행 중인 스레드가 지정된 소스 행에 도달할 때까지 계속 실행됩니다. 스레드만이 수행되도록 하려면, set 부속 명령을 사용하여 $hold_next 변수를 설정하십시오. 이 변수를 설정하면 수행 중인 스레드는 블록화된 스레드 중 하나가 보유중인 잠금을 기다릴 수 있기 때문에 교착상태(deadlock)가 발생할 수 있습니다.
주: step 부속 명령의 동작을 제어하려면 set 부속 명령의 $stepignore 변수를 사용합니다. $stepignore 변수는 step 부속 명령이 디버깅 정보를 사용할 수 없는 대형 루틴으로 넘어갈 수 있도록 합니다.
예제
한 개의 소스 행 실행을 계속하려면, 다음과 같이 입력하십시오.
step
5개의 소스 행 실행을 계속하려면, 다음과 같이 입력하십시오.
step 5
dbx 프로그램에서 printf 함수를 단일 단계처리 못하게 하려면,
60 printf ("hello world \n")
다음과 같이 입력하십시오.
set $stepignore="function"; step
cont 부속 명령, goto 부속 명령, next 부속 명령, set 부속 명령, stepi 부속 명령을 참조하십시오.
stepi 부속 명령
stepi [ Number ]
stepi 부속 명령은 응용프로그램의 명령을 수행합니다. Number 매개변수를 사용하여 실행될 명령의 수를 지정하십시오. Number 매개변수를 생략하면 디폴트는 1이 됩니다.
복수 스레드 응용프로그램에서 사용될 경우, stepi 부속 명령은 수행 중인 스레드만을 진행합니다. 다른 모든 사용자 스레드는 정지된 채 남아 있습니다.
예제
한 개의 기계 명령 실행을 계속하려면, 다음과 같이 입력하십시오.
stepi
5개의 기계 명령 실행을 계속하려면 다음과 같이 입력하십시오.
stepi 5
gotoi 부속 명령, nexti 부속 명령, step 부속 명령을 참조하십시오.
stop 부속 명령
stop { [Variable] [ at SourceLine | in Procedure ] [ if Condition ]}
stop 부속 명령은 특정 조건이 충족되면 응용프로그램을 정지합니다. 다음과 같은 경우에 프로그램이 정지됩니다.
if Condition 플래그를 사용하면 Condition이 참이 됩니다.
in Procedure 플래그를 사용하면 Procedure가 호출됩니다.
Variable 매개변수를 지정하면 Variable 매개변수가 변경됩니다.
at SourceLine 플래그를 사용하면 SourceLine 행 번호에 도달합니다.
SourceLine 변수는 :(콜론)과 정수가 뒤에 붙는 파일 이름 문자열 또는 정수로 지정할 수 있습니다.
이 명령 다음에 dbx 디버그 프로그램은 사용자 명령 결과로 구성한 이벤트를 보고하는 메세지로 응답합니다. 메세지에는 명령에 대한 설명과 함께 중단점에 연관된 이벤트 ID가 들어 있습니다. 설명 구문은 사용자 명령과는 동일하지 않을 수도 있습니다. 예를 들면 다음과 같습니다.
stop in main
[1] stop in main
stop at 19 if x == 3
[2] stop at "hello.c":19 if x = 3
대괄호 안의 숫자는 중단점과 관련된 이벤트 식별자입니다. dbx 디버그 프로그램은 이벤트 번호를 각 stop 부속 명령에 연관시킵니다. 이벤트 중 하나의 결과로 프로그램이 중단되면, 현재 행과 함께 이벤트 식별자가 표시되어 어떤 이벤트가 프로그램을 정지시켰는지 알 수 있습니다. 사용자가 작성한 이벤트는 dbx가 작성한 이벤트와 합쳐져서, 이벤트 번호는 항상 순차적이지 않을 수 있습니다.
status 부속 명령을 사용하여 이 번호를 열람할 수 있습니다. status로부터의 출력을 파일로 재지정할 수 있습니다. delete 또는 clear 부속 명령을 사용하여 stop 부속 명령을 정지시키십시오.
복수 스레드 응용프로그램에서 사용자 스레드가 중단점과 만나게 되면 모든 사용자 스레드가 정지됩니다. 아래 예제 9에서 설명한 것처럼 조건을 지정하지 않으면