'OS/리눅스 & 유닉스'에 해당되는 글 130건

  1. 2011.11.24 make 관련 한글 메뉴얼 사이트
  2. 2011.11.24 dbx 명령
  3. 2011.11.24 find 03
  4. 2011.11.24 find 02
  5. 2011.11.24 find 01
  6. 2011.11.24 grep 옵션
  7. 2011.11.21 유닉스 작업 시간 측정 (마이크로세컨드)
  8. 2011.11.18 [Unix] 시간측정
  9. 2011.11.14 유닉스 chmod 값
  10. 2011.11.08 waitpid

make 관련 한글 메뉴얼 사이트

OS/리눅스 & 유닉스 2011. 11. 24. 17:25
http://www.viper.pe.kr/docs/make-ko/make-ko_toc.html

http://wiki.kldp.org/KoreanDoc/html/gcc_and_make/gcc_and_make.html#toc3

http://wiki.kldp.org/KoreanDoc/html/GNU-Make/GNU-Make.html#toc3

'OS > 리눅스 & 유닉스' 카테고리의 다른 글

make 널 확장자 규칙  (0) 2011.11.24
make 확장자 규칙  (0) 2011.11.24
dbx 명령  (0) 2011.11.24
find 03  (0) 2011.11.24
find 02  (0) 2011.11.24
:

dbx 명령

OS/리눅스 & 유닉스 2011. 11. 24. 14:52

dbx 명령

목적

운영 시스템하에서 프로그램을 실행하고 디버그하기 위한 환경을 제공합니다.

구문

dbx [ -a ProcessID ] [ -c CommandFile ] [ -d NestingDepth ] [ -I Directory ] [ -EDebugEnvironment ] [ -k ] [ -u ] [ -F ] [ -r ] [ -x ] [ ObjectFile CoreFile ] ]

설명

dbx 명령은 C, C++, Pascal 및 FORTRAN 프로그램에 대한 디버그를 제공하여, 사용자가 다음과 같은 작업을 수행할 수 있도록 합니다.

  • 오브젝트 및 core 파일 검사.
  • 프로그램 실행을 위한 제어 환경 제공.
  • 선택한 문장에 중단점을 설정하거나 한 번에 한 행씩 프로그램 실행.
  • 변수를 사용하여 디버그한 후 올바른 형식으로 표시.

ObjectFile 매개변수는 컴파일러가 만들어 내는 오브젝트(실행 가능) 파일입니다. dbx 명령에 필요한 정보를 만들기 위해 프로그램 컴파일시 -g(기호표 작성) 플래그를 사용합니다.

주: cc 명령의 -g 플래그는 오브젝트 파일이 컴파일될 때 사용해야 합니다. -g 플래그를 사용하지 않거나 strip 명령으로 xcoff 파일에서 기호 참조가 제거된 경우, dbx 명령의 사용 범위는 제한됩니다.

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

ObjectFile을 지정하지 않으면, dbx는 디버그할 오브젝트 파일 이름을 요청합니다. 디폴트는 a.out입니다. core 파일이 현재 디렉토리에 존재하거나 CoreFile 매개변수가 지정되어 있으면, dbx는 프로그램에 이상이 있는 위치를 보고합니다. core 이미지에 보유된 변수, 레지스터 및 메모리는 ObjectFile의 실행이 시작될 때까지 검사되어 집니다. 그 시점에 dbx 디버그 프로그램은 명령을 위한 프롬프트를 리턴합니다.

표현식 처리

dbx 프로그램은 광범위한 표현식을 사용합니다. dbx 디버그 프로그램에 C 및 Pascal 구문의 공통적인 기능의 일부와, 여러 가지 FORTRAN 확장자를 가진 표현식을 지정할 수 있습니다.

디버그 프로그램에서 자주 사용되는 연산자는 다음과 같습니다.

*(별표) 또는 ^(탈자부호) 간접 표현이나 포인터 참조를 표시합니다.
[ ](대괄호) 또는 ( )(괄호) 첨자 배열 표현식을 표시합니다.
. (마침표) 포인터 및 구조체와 함께 이 필드 참조 연산자를 사용합니다. 이것은 C 연산자인 -> (화살표)를 사용하지 않고도 가능합니다.
&(앰퍼샌드) 변수 주소를 알 수 있습니다.
.. (2개의 점) 배열의 하위 섹션을 지정할 때 상하한을 구분합니다. 예 : n[1..4].

디버그 프로그램에서 사용되는 연산자 유형은 다음과 같습니다.

대수표현식 =-*/(부동소수의 나눗셈), div(정수의 나눗셈), modexp(지수연산)
비트 단위 연산 -, I, bitand, xor, ~. <<, >>
논리표현식 or, and, not, II, &&
비교 <, >, <=, >=, < > 또는!=, = 또는 ==
기타 (유형 이름), 크기

stop 부속 명령 및 trace 부속 명령과 같은 조건에서 논리 및 비교 표현식이 허용됩니다.

표현식 유형은 검사되어 집니다. 사용자는 표현식의 이름을 변경하거나 캐스팅 연산자를 사용하여 표현식 유형을 대체합니다. 이름 바꾸기의 세 가지 양식은 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 레이지(lazy) 읽기 모드를 중단하고 dbx 명령이 시작시 모든 기호를 읽도록 하는 데 사용될 수 있습니다. 디폴트로, 레이지(lazy) 읽기 모드는 온(on) 상태입니다. 이는 dbx 세션을 초기화하는 데 필요한 기호 테이블 정보만을 읽습니다. 이 모드에서, dbx는 기호 정보를 읽지 않은 국지 변수 및 유형은 읽지 않습니다. 따라서, whereis i와 같은 명령은 각 함수 내의 국지 변수 i의 모든 경우에 대해서 보여줄 수는 없습니다.
-I Directory (대문자 i) 소스 파일의 위치를 찾기 위한 디렉토리 리스트는 Direcory 변수가 지정한 디렉토리를 포함합니다. 디폴트는 다음 디렉토리에서 소스 파일을 찾는 것입니다.
  • 컴파일되었을 때 소스 파일이 위치한 디렉토리. 이 디렉토리는 컴파일러가 오브젝트의 소스 경로에 있을 때만 찾을 수 있습니다.
  • 현재 디렉토리
  • 프로그램이 현재 위치한 디렉토리.
-k 메모리 주소를 대응시킵니다. 커널 디버깅에 사용될 수 있습니다.
-r 즉시 오브젝트 파일을 실행합니다. 성공적으로 종료되면, dbx 디버그 프로그램이 종료됩니다. 그렇지 않으면, 디버그 프로그램으로 들어가게 되고 종료되어진 원인을 보여줍니다.
주: -r을 지정하지 않으면, dbx 명령은 사용자가 명령을 입력하도록 프롬프트를 대기시킵니다.
-u dbx 명령은 파일 이름 기호 앞에 @(at 기호)를 붙입니다. 이 플래그는 모호한 기호 이름이 생기는 것을 방지해 줍니다.
-x dbx 명령이 FORTRAN 소스 코드에서 발생한 기호로부터 _ (뒤에 붙은 밑줄) 문자를 삭제하지 못하도록 합니다. 이 플래그는 dbx 명령이 xxx 및 xxx_와 같이 밑줄 문자가 없으면 동일한 기호를 서로 구분할 수 있도록 해 줍니다.

예제

  1. 다음 예제는 프로세스와 동시에 dbx 디버그 프로그램을 시작하는 방법에 대해 설명합니다. 예제는 samp.c라는 프로그램을 사용합니다. 이 C 프로그램은 먼저 기호 표 참조사항이 들어 있는 오브젝트 파일을 작성하기 위해 -g 플래그를 사용하여 컴파일됩니다. 이런 경우, samp 프로그램은 다음 사항을 표시합니다.
    $ cc -g samp.c -o samp
    samp 프로그램이 수행 중일 때 운영 시스템은 버스 오류를 알리고 다음과 같이 사용자의 현재 작업 디렉토리에 core 이미지를 작성합니다.
    $ 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. 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입니다.

    2. 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에 의해 시작된 것처럼 지금 프로세스를 조회하고 디버그할 수 있습니다.

  3. 실행 파일인 objefile의 소스 파일을 탐색하기 위한 디렉토리 리스트에 디렉토리를 추가하려면, 다음과 같이 입력하십오.
    $dbx -I /home/user/src -I /home/group/src objfile

    일단 dbx가 시작되면 use 부속 명령을 사용할 수도 있습니다. -I 플래그가 리스트에 디렉토리를 추가하는 것과는 달리 use 명령은 디렉토리 리스트를 재설정합니다.

  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 플래그는 사용자가 core 이미지를 가지고 있지 않더라도 메모리에서 사용자의 프로세스 상태를 검사할 수 있도록 합니다.

  5. 디버그 프로그램에 대한 환경 변수를 지정하려면, 다음을 입력하십시오.
    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 thread를 표시하고 제어합니다.
trace 추적 정보를 인쇄합니다.
tracei 추적을 실행합니다.
unalias 별명을 제거합니다.
unset 변수를 삭제합니다.
up 스택 위로 현재 기능을 이동합니다.
use 소스 파일을 찾을 때 디렉토리 리스트를 찾도록 설정합니다.
whatis 응용프로그램 구성요소 선언을 표시합니다.
where 사용 중인 프로시듀어와 함수 리스트를 표시합니다.
whereis 이름이 지정된 식별자와 일치하는 모든 기호에 대한 전체 조건을 표시합니다.
which 주어진 식별자에 대한 전체 조건을 표시합니다.

/ 부속 명령

RegularExpression] ]

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

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

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

? 부속 명령

RegularExpression] ]

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

예제
  1. 현재 소스 파일에서 문자 z에 대해 뒤쪽으로 탐색하려면, 다음과 같이 입력하십시오.
    ?z
  2. 이전 탐색을 반복하려면, 다음과 같이 입력하십시오.
    ?

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

alias 부속 명령

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

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

예제
  1. rerun을 rr로 바꾸려면, 다음과 같이 입력하십시오.
     alias rr rerun
  2. printandstep이 명령 행에 입력될 때 두 개의 부속 명령 print n과 step을 수행하려면, 다음과 같이 입력하십시오.
     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 Variable =Expression

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

예제
  1. 값 5를 변수 x에 지정하려면 다음과 같이 입력하십시오.
     assign x = 5
  2. 변수 y를 변수 x에 지정하려면 다음과 같이 입력하십시오.
    assign x = y
  3. 문자 값'z'를 변수 z에 지정하려면 다음과 같이 입력하십시오.
    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 부속 명령은 사용자 thread, mutex 또는 AttributeNumber 매개변수에 의해 정의된 조건 속성 오브젝트에 대한 정보를 표시합니다. 매개변수를 지정하지 않으면, 모든 속성 오브젝트가 나열됩니다.

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

attr 속성 오브젝트의 기호 이름을 $a AttributeNumber 양식으로 나타냅니다.
obj_addr 속성 오브젝트의 주소를 나타냅니다.
type 속성 오브젝트의 유형을 나타냅니다. 사용자 thread, mutex, 조건 변수의 경우 속성 오브젝트 유형은 각각 thrmutex 또는 cond가 됩니다.
state 속성 오브젝트 상태를 나타냅니다. valid나 inval이 될 수 있습니다.
stack thread 속성 오브젝트의 스택 크기 속성을 나타냅니다.
scope thread 속성 오브젝트의 유효범위 속성을 나타냅니다. 이것은 thread의 경합 유효범위를 결정하고, 자원을 서로 차지하려는 하는 thread 세트를 지정합니다. 시스템이나 프로세스 경합 유효범위에 대한 값은 sys나 pro가 될 수 있습니다.
prio thread 속성 오브젝트의 우선순위 속성을 나타냅니다.
sched thread 속성 오브젝트의 스케줄 방식의 속성을 나타냅니다. 이 속성은 스케줄 방식을 제어하는데, fiforr (라운드 로빈) 또는 other가 될 수 있습니다.
p-shar mutex나 condition 속성 오브젝트의 프로세스 공유 속성을 나타냅니다. mutex나 condition은 다른 프로세스에 속하는 thread가 여기에 액세스할 수 있으면, 프로세스를 공유합니다. 값은 yes나 no가 될 수 있습니다.
protocol mutex의 프로토콜 속성을 나타냅니다. 이 속성은 thread 우선순위에서 mutex를 보유하는 효과를 결정합니다. 값은 no_prioprio 또는 protect가 될 수 있습니다.
주:
  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 부속 명령을 참조하십시오.

AIX Version 4.3 General Programming Concepts: Writing and Debugging Programs의 Creating ThreadsUsing Mutexes 및 Using Condition Variables도 참조하십시오.

call 부속 명령

call Procedure ( [ Parameters ] )

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 기호를 대문자로 해석합니다.
예제
  1. 현재 케이스 모드를 표시하려면 다음과 같이 입력하십시오.
    case
  2. 실제로 나타나는 대로 기호를 해석하도록 dbx를 지시하려면 다음과 같이 입력하십시오.
    case mixed
  3. 기호를 대문자로 해석하도록 dbx를 지시하려면 다음과 같이 입력하십시오.
    case upper

변수의 대소문자 변환을 참조하십시오.

catch 부속 명령

catch [ SignalNumber SignalName ]

catch 부속 명령은 신호가 응용프로그램으로 전송되기 전에 지정된 신호 트랩을 시작합니다. 이 부속 명령은 디버그되고 있는 응용프로그램이 인터럽트와 같은 신호를 처리할 때 유용합니다. 트랩될 신호는 각각 SignalNumber 또는 SignalName 매개변수를 사용하여 번호 또는 이름으로 지정할 수 있습니다. 신호 이름은 대소문자를 구별하지 않으며 SIG 접두어는 선택적입니다. SignalNumber 또는SignalName 매개변수 중 아무것도 지정하지 않으면, 디폴트로 모든 신호(SIGHUPSIGCLD,SIGALARM 및 SIGKILL 신호는 제외)가 트랩됩니다. 아무 인수도 지정하지 않으면, 찾고자 하는 현재 신호 리스트가 표시됩니다.

예제
  1. dbx가 찾고자 하는 현재 신호 리스트를 표시하려면 다음과 같이 입력하십시오.
    catch
  2. 신호 SIGALARM을 트랩하려면 다음과 같이 입력하십시오.
    catch SIGALARM

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

clear 부속 명령

clear SourceLine

clear 부속 명령은 주어진 소스 행에서 모든 정지(stop)를 제거합니다. SourceLine 매개변수는 두 가지 형식으로 지정할 수 있습니다.

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

19 행에서 중단점을 제거하려면 다음과 같이 입력하십시오.

clear 19

cleari 부속 명령 및 delete 부속 명령. AIX General Programming Concepts: Writing and Debugging Programs Setting and Deleting Breakpoints를 참조하십시오.

cleari 부속 명령

cleari Address

cleari 부속 명령은 Address 매개변수가 지정한 주소에서 모든 중단점을 지웁니다.

예제
  1. 주소 0x100001b4에서 중단점 설정을 제거하려면 다음과 같이 입력하십시오.
    cleari 0x100001b4
  2. main() 프로시듀어 주소에서 중단점 설정을 제거하려면 다음과 같이 입력하십시오.
    cleari &main

clear 부속 명령, delete 부속 명령 및 AIX General Programming Concepts: Writing and Debugging Programs Setting and Deleting Breakpoints를 참조하십시오.

condition 부속 명령

condition wait nowait ConditionNumber ... ]

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

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

cv $c ConditionNumber 형식으로 조건 변수의 기호 이름을 나타냅니다.
obj_addr 조건 변수의 메모리 주소를 나타냅니다.
num_wait 조건 변수에서 대기중인 thread의 갯수를 나타냅니다.
waiters 조건 변수에서 대기중인 사용자 thread를 나열합니다.
주: dbx 디버그 프로그램의 print 부속 명령은 기호 조건 변수 이름을 식별하여 해당 오브젝트 상태를 표시하는 데 사용할 수 있습니다.
플래그
wait 대기중인 thread가 있는 조건 변수를 표시합니다.
nowait 대기중인 thread가 없는 조건 변수를 표시합니다.
예제
  1. 모든 조건 변수에 관한 정보를 표시하려면 다음과 같이 입력하십시오.
    condition
  2. 대기중인 thread가 있는 모든 조건 변수에 관한 정보를 표시하려면 다음과 같이 입력하십시오.
    condition wait
  3. 조건 변수 3에 관한 정보를 표시하려면 다음과 같이 입력하십시오.
    condition 3
    출력은 다음과 유사합니다.
    cv obj_addr num_wait waiters $c3 0x20003290 0

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

AIX Version 4.3 General Programming Concepts: Writing and Debugging Programs의 Using Condition Variables도 참조하십시오.

cont 부속 명령

cont [ SignalNumber | SignalName ]

cont 부속 명령은 프로그램이 종료되거나 다른 중단점에 도달할 때까지 현재 정지점에 있는 응용프로그램을 계속해서 실행합니다. 신호를 지정하면, 프로그램은 SignalNumber 매개변수에 지정된 숫자나SignalName 매개변수에 지정된 이름에 의해 그 신호를 받은 것으로 간주하고 실행을 계속합니다. 신호 이름은 대소문자를 구분하지 않으며 SIG 접두어는 선택적입니다. 신호가 지정되지 않으면, 프로그램은 중단되지 않았던 것처럼 실행을 계속합니다.

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

dbx 명령에 대해서는 detach부속 명령, dbx 명령에 대해서는 goto 부속 명령, dbx 명령에 대해서는next 부속 명령, dbx 명령에 대해서는 skip 부속 명령, dbx 명령에 대해서는 step 부속 명령을 참조하십시오.

delete 부속 명령

delete { Number ... | all }

delete 부속 명령은 응용프로그램에 설명되어 있는 추적 및 정지를 해제합니다. 해제될 추적 및 정지는 Number 매개변수에 의해 지정될 수 있으며, 모든 추적 및 정지는 all 플래그를 사용하여 해제될 수 있습니다. dbx 프로그램별로 추적 및 정지에 연관된 숫자를 표시하려면 status 부속 명령을 사용하십시오.

플래그

all 모든 추적 및 정지를 해제합니다.

예제

  1. 응용프로그램에서 모든 추적 및 정지를 해제하려면, 다음을 입력하십시오.
    delete all
  2. 이벤트 번호 4에 대한 추적 및 정지를 해제하려면, 다음을 입력하십시오.
    delete 4

clear 부속 명령, cleari 부속 명령, status 부속 명령 및 AIX 버전 4.3 일반 프로그래밍 개념: 프로그램 작성 및 디버깅에 있는 중단점 설정 및 해제를 참조하십시오.

detach 부속 명령

detach [ SignalNumber | SignalName ]

detach 부속 명령은 응용프로그램의 실행을 계속하고 디버그 프로그램을 종료합니다. 신호는 다음의 두 가지 방법 가운데 한가지로 지정될 수 있습니다.

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

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

    신호를 지정하면, 프로그램은 그 신호를 받은 것으로 간주하고 실행을 계속합니다. 신호를 지정하지 않으면, 프로그램은 정지가 발생하지 않았던 것처럼 실행을 계속합니다.

예제

  1. 응용프로그램의 실행을 계속하고 dbx를 종료하려면 다음을 입력하십시오.
    detach
  2. SIGREQUEST 신호를 받은 것처럼 dbx를 종료하고 응용프로그램의 실행을 계속하려면, 다음을 입력하십시오.
    detach SIGREQUEST

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

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진수로 긴 단어를 인쇄합니다.
플래그
>File 지정된 파일로 출력을 재지정합니다.
예제
  1. 주소 0x3fffe460에서 16진수 문자열에 있는 메모리 내용 중 긴 단어 하나를 표시하려면 다음과 같이 입력하십시오.
    0x3fffe460 / X
  2. 변수 y에서 시작하는 메모리 2바이트의 내용을 문자로 나타내려면 다음을 입력하십시오.
    &y / 2c
  3. FORTRAN 문자열 a_string에서 6-8번째 요소를 표시하려면 다음과 같이 입력하십시오.
    &a_string + 5, &a_string + 7/c

AIX General Programming Concepts: Writing and Debugging Programs Examining Memory Addresses를 참조하십시오.

down 부속 명령

down Count ]

down 부속 명령은 현재의 함수를 Count 레벨 번호 아래로 이동시킵니다. 현재 함수는 이름을 분석하는 데 사용됩니다. Count 매개변수에 대한 디폴트는 1입니다.

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

up 부속 명령, where 부속 명령, AIX General Programming Concepts: Writing and Debugging Programs Displaying a Stack Trace를 참조하십시오.

dump 부속 명령

dump [ Procedure ] [ >File ]

dump 부속 명령은 지정된 프로시듀어 내의 모든 변수 이름과 값을 표시합니다. Procedure 매개변수는 .(점)이며, 모든 사용 중에 있는 변수가 표시됩니다. Procedure 매개변수를 지정하지 않으면, 현재 프로시듀어가 사용됩니다. >File 플래그를 사용하면 출력은 지정된 파일로 재지정됩니다.

플래그
>File 지정된 파일로 출력을 재지정합니다.
예제
  1. 현재 프로시듀어에 있는 변수 이름과 값을 표시하려면 다음과 같이 입력하십시오.
    dump
  2. add_count 프로시듀어에 있는 변수 이름과 값을 표시하려면 다음과 같이 입력하십시오.
    dump add_count
  3. 현재 프로시듀어에 있는 변수 이름과 값을 var.list 파일로 재지정하려면 다음과 같이 입력하십시오.
    dump > var.list

AIX General Programming Concepts: Writing and Debugging Programs Displaying and Modifying Variables를 참조하십시오.

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 명령을 참조하십시오. 또한, AIX 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 부속 명령은 파일의 전체 또는 상대 경로도 표시합니다.

예제
  1. 현재의 소스 파일을 main.c 파일로 변경하려면 다음과 같이 입력하십시오.
    file main.c
  2. 현재 소스 파일 이름을 표시하려면, 다음과 같이 입력하십시오.
    File

func 부속 명령을 참조하십시오. 또한, AIX General Programming Concepts: Writing and Debugging Programs Changing the Current File or Procedure 및 Displaying the Current File도 참조하십시오.

func 부속 명령

func [ Procedure ]

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

예제
  1. 현재 함수를 do_count 프로시듀어로 변경하려면 다음과 같이 입력하십시오.
    func do_count
  2. 현재 함수 이름을 표시하려면, 다음과 같이 입력하십시오.
    func

file 부속 명령을 참조하십시오. 또한, AIX 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 thread 관련 오브젝트에 액세스하기 위한 dbx 부속 명령을 나열합니다.
expressions dbx 표현식 구문과 연산자를 설명합니다.
scope dbx가 유효범위가 다른 이름을 어떻게 결정하는지를 설명합니다.
set_variables 사용법 설명과 함께 dbx 디버그 변수를 나열합니다.
usage 간략한 설명과 함께 일반 dbx 부속 명령을 나열합니다.
예제
  1. 사용 가능한 dbx 부속 명령과 주제를 모두 나열하려면 다음과 같이 입력하십시오.
    help
  2. dbx 부속 명령 리스트에 대한 설명을 표시하려면 다음과 같이 입력하십시오.
    help list
  3. dbx 주제 set_variables에 대한 설명을 표시하려면 다음과 같이 입력하십시오.
    help set_variables

ignore 부속 명령

ignore [ SignalNumber SignalName ]

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

다음 사항이 트랩되는 신호를 지정합니다.

  • SignalNumber 매개변수를 동반한 숫자.
  • SignalName 매개변수를 동반한 이름.

신호 이름은 대소문자를 구분하지 않습니다. SIG 접두어는 생략 가능합니다.

SignalNumber 또는 SignalName 매개변수 중 아무것도 지정하지 않으면, 디폴트로 SIGHUP,SIGCLDSIGALRM 및 SIGKILL 신호를 제외한 모든 신호가 트랩됩니다. dbx 디버그 프로그램은SIGTRAP 신호가 디버깅되고 있는 프로그램이 아닌 다른 외부의 프로세스에서 발생한 것일 경우에는 무시할 수 없습니다. 아무 인수도 지정하지 않으면, 현재 무시된 신호의 리스트가 표시됩니다.

예제

dbx가 응용프로그램으로 송신된 제한시간 초과 신호를 무시하도록 하려면 다음과 같이 입력하십시오.

ignore alrm

catch 부속 명령을 참조하십시오. 또한, AIX 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. 현재 파일에서 행 1에서 10까지 나열하려면 다음과 같이 입력하십시오.
    list 1,10
  2. main 프로시듀어 근방의 10이나 $listwindow 행을 나열하려면 다음과 같이 입력하십시오.]
    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)

edit 부속 명령, listi 부속 명령 및 move 부속 명령을 참조하십시오. AIX 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 또는 PowerPC 구조에 대한 명령을 역어셈블할 수 있습니다. 디폴트 모드에서는 dbx 프로그램이 수행 중인 구조에 대한 명령을 표시합니다.

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

플래그
at SourceLine 나열하기 위해 시작 소스 행을 지정합니다.
예제
  1. 다음 10이나, $listwindow, 명령을 나열하려면 다음과 같이 입력하십시오.
    listi
  2. 소스 행 10에 있는 기계 명령어를 나열하려면 다음과 같이 입력하십시오.
    listi at 10
  3. 파일 sample.c에 있는 소스 행 5에서 시작하는 기계 명령어를 나열하려면 다음과 같이 입력하십시오.
    listi at "sample.c":5
  4. 주소 0x10000400와 0x10000420 사이에 있는 명령을 나열하려면 다음과 같이 입력하십시오.
    listi 0x10000400, 0x10000420

list 부속 명령 및 set 부속 명령을 참조하십시오. 또한, AIX General Programming Concepts: Writing and Debugging Programs Debugging at the Machine Level with dbx도 참조하십시오.

map 부속 명령

map [ File ]

map 부속 명령은 응용프로그램의 각 로드 부분에 대한 특징을 표시합니다. 이 정보에는 각 로드 모듈의 이름, 텍스트 기점, 텍스트 길이, 데이타 기점 및 데이타 길이가 포함되어 있습니다.

플래그
>File 지정된 파일로 출력을 재지정합니다.

AIX General Programming Concepts: Writing and Debugging Programs Debugging at the Machine Level with dbx를 참조하십시오.

move 부속 명령

move SourceLine

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

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

예제
  1. 나열할 다음 행을 12 행으로 변경하려면 다음과 같이 입력하십시오.
    move 12
  2. 나열할 다음 행을 sample.c 파일에 있는 5 행으로 변경하려면 다음과 같이 입력하십시오.
    move "sample.c":5

list 부속 명령을 참조하십시오. AIX General Programming Concepts: Writing and Debugging Programs Displaying the Current를 참조하십시오.

multproc 부속 명령

multproc [ on | parent | child off ]

multproc 부속 명령은 분기실행되는 프로세스가 작성될 때 dbx 디버그 프로그램의 동작을 지정합니다. on 플래그는 분기실행의 하위 경로를 디버그하기 위해 새로운 dbx 세션을 작성하도록 지정하는 데 사용됩니다. 원래 dbx는 상위 경로의 디버그를 계속합니다. 상위 및 하위 플래그는 다음에 분기할 단일 경로를 지정하는 데 사용됩니다. off를 제외한 모든 플래그는 dbx가 실행된 프로세스를 따를 수 있도록 합니다. off 플래그는 다중 프로세스 디버깅을 사용 불가능하게 합니다. 플래그를 지정하지 않으면, multproc 부속 명령은 다중 프로세스 디버깅의 현재 상태를 리턴합니다.

dbx 프로그램은 다중 프로세스 디버깅을 위해 Xwindows를 사용합니다. dbx 프로그램은 다중 프로세스에 필요한 만큼의 창을 엽니다. 각 하위 창의 제목은 하위 프로세스의 프로세스 ID(pid)입니다. 프로세스간을 전환하려면, Xwindows 처리 기법을 사용하여 dbx 세션이 표시된 창을 활성화하십시오. 시스템에 Xwindows 지원이 없으면, 디버그가 분기실행할 때 경고 메시지가 표시되며 dbx 프로그램은 상위 프로세스의 디버그만을 계속합니다. 다중 프로세스 디버깅은 다음과 같은 이유로 성공하지 못할 수도 있습니다.

  • dbx 프로그램이 Xwindows 환경에서 수행되지 않는 경우.
  • Xwindows는 수행되지만 dbx $xdisplay 전역 변수가 유효하지 않은 표시장치 이름으로 설정된 경우. $xdisplay 변수는 쉘 DISPLAY 환경 변수로 초기설정됩니다. setName=Expression dbx 부속 명령을 사용하여 표시장치 이름을 변경할 수 있습니다.
  • /tmp 디렉토리에서 디버깅 프로그램에 대한 읽기 및 쓰기 액세스 권한이 허용되지 않는 경우.dbx 프로그램은 Xwindow 환경을 제어할 때 이 디렉토리에 적은 공간을 필요로 합니다.
  • 시스템이 새로운 Xwindow를 수용할 자원을 충분히 가지고 있지 못한 경우.

$xdisplay가 원격 표시장치로 설정되면, 사용자는 새로 작성된 Xwindow를 보지 못할 수도 있습니다.$xdisplay 설정이 올바르지 못하면, Xwindows 또는 다른 시스템 자원이 장애의 원인을 알려줍니다.

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

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

새로 작성된 창을 사용자 정의로 구성하려면 .Xdefaults 파일에 있는 dbx_term 응용프로그램 이름으로 정의할 수 있습니다.

플래그
on 다중 프로세스 디버깅이 가능합니다.
off 다중 프로세스 디버깅이 불가능합니다.
예제
  1. 다중 프로세스 디버깅의 현재 상태를 점검하려면, 다음과 같이 입력하십시오.
    multproc
  2. 다중 프로세스 디버깅을 사용하려면, 다음과 같이 입력하십시오.
    multproc on
  3. 다중 프로세스 디버깅을 사용 불가능하게 하려면, 다음과 같이 입력하십시오.
    multproc off

screen 부속 명령과 fork 서브루틴을 참조하십시오. 또한, AIX 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 $m MutexNumber 양식으로 mutex 기호 이름을 나타냅니다.
type 다음과 같은 mutex 유형을 나타냅니다. non-rec(비순환), recursi(순환) 또는 fast.
obj_addr mutex의 메모리 주소를 나타냅니다.
lock mutex의 잠금 상태를 나타냅니다. mutex가 잠겨 있으면 yes, 잠겨 있지 않으면 no입니다.
owner mutex가 잠금 상태인 경우에 mutex를 갖는 사용자 thread의 기호 이름을 나타냅니다.
blockers 이 mutex 변수에 블록화되어 있는 사용자 thread를 나열합니다.
주: dbx 디버그 프로그램의 print 부속 명령은 기호 mutex 이름을 인지하며, 이 부속 명령을 해당 오브젝트 상태를 표시하는 데 사용할 수 있습니다.
플래그
lock 잠금 상태인 mutex에 관한 정보를 표시합니다.
unlock 잠금 상태가 아닌 mutex에 관한 정보를 표시합니다.
thnum 특정 thread가 보유하는 모든 mutex에 대한 정보를 표시합니다.
utid 사용자 thread id가 주어진 사용자 thread id와 일치하는 사용자 thread가 보유하는 모든 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. thread 1이 보유하는 모든 mutex에 대한 정보를 표시하려면 다음을 입력하십시오.
    mutex thnum 1
  5. 사용자 thread id가 0x0001인 thread가 보유하는 모든 mutex에 대한 정보를 표시하려면 다음을 입력하십시오.
    mutex utid 0x0001

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

또한, AIX Version 4.3 General Programming Concepts: Writing and Debugging Programs의 Using Mutexes도 참조하십시오.

next 부속 명령

next [ Number ]

next 부속 명령은 소스의 다음 행까지 응용프로그램을 수행합니다. Number 매개변수는 next 부속 명령이 실행될 횟수를 지정합니다. Number 매개변수를 지정하지 않으면, next는 한 번만 수행됩니다.

복수의 thread 응용프로그램에서 next 부속 명령을 수행하면, 모든 사용자 thread는 조작중에 수행되지만 프로그램은 수행중인 thread가 지정된 소스 행에 도달할 때까지 계속 실행됩니다. thread만이 수행되도록 하려면, set 부속 명령을 사용하여 $hold_next 변수를 설정하십시오. 이 변수를 설정하면 수행중인 thread는 블록화된 thread 중 하나가 보유중인 잠금을 기다릴 수 있기 때문에 교착상태(deadlock)가 발생할 수 있습니다.

예제
  1. 다음 소스 행까지 실행을 계속하려면 다음과 같이 입력하십시오.
    next
  2. 현재 소스 행 다음의 세 번째 소스 행까지 실행을 계속하려면 다음과 같이 입력하십시오.
    next 3

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

nexti 부속 명령

nexti [ Number ]

nexti 부속 명령은 다음 명령까지 응용프로그램을 수행합니다. Number 매개변수는 nexti 부속 명령이 수행될 횟수를 지정합니다. Number 매개변수를 지정하지 않으면, nexti는 한 번만 수행됩니다.

복수의 thread 응용프로그램에서 nexti 부속 명령을 수행하면, 모든 사용자 thread는 조작중에 수행되지만 프로그램은 수행중인 thread가 지정된 명령에 도달할 때가지 계속 실행됩니다. thread만이 수행되도록 하려면, set 부속 명령을 사용하여 $hold_next 변수를 설정하십시오. 이 변수를 설정하면 수행 중인 thread는 블록화된 thread 중 하나가 보유중인 잠금을 기다릴 수 있기 때문에 교착상태(deadlock)가 발생할 수 있습니다.

예제
  1. 다음 기계 명령어까지 실행을 계속하려면 다음과 같이 입력하십시오.
    nexti
  2. 현재 기계 명령어 다음의 세 번째 기계 명령어까지 실행을 계속하려면 다음과 같이 입력하십시오.
    nexti 3

gotoi 부속 명령, next 부속 명령, set 부속 명령 및 stepi 부속 명령을 참조하십시오. 또한, AIX General Programming Concepts: Writing and Debugging Programs Running a Program at the Machine Level을 참조하십시오.

print 부속 명령

print Expression ...

print Procedure ( [ Parameters ] )

print 부속 명령은 다음 중의 한 가지를 수행합니다.

  • Expression 매개변수가 지정한 표현식 리스트의 값을 출력합니다.
  • Procedure 매개변수가 지정한 프로시듀어를 실행하고 해당 프로시듀어 리턴 값을 출력합니다. 매개변수는 프로시듀어로 전달됩니다.
예제
  1. 왼쪽으로 2비트 이동한 x 값과 y 값을 표시하려면 다음과 같이 입력하십시오.
    print x, y << 2
  2. 인수 0과 함께 sbrk 루틴을 호출하여 리턴 값을 표시하려면 다음과 같이 입력하십시오.
    print sbrk(0)

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

prompt 부속 명령

prompt [ "String]

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

예제

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

prompt "dbx>"

AIX 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 부속 명령을 사용하십시오.
주: 현재 thread가 커널 모드에 있는 경우에는 registers 부속 명령이 레지스터를 표시할 수 없습니다.
플래그
>File 지정된 파일로 출력을 재지정합니다.

set 부속 명령 및 unset 부속 명령을 참조하십시오. 또한, AIX 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로 출력을 재지정합니다.
> >File File에 재지정한 출력을 추가합니다..
2>File File로 표준 오류를 재지정합니다.
2> >File File에 재지정한 표준 오류를 추가합니다.
>&File File로 표준 오류 및 출력을 재지정합니다.
> >&File File에 출력 및 표준 오류를 추가합니다.

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

return 부속 명령

return [ Procedure ]

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

예제
  1. 호출 루틴으로 실행을 계속하려면 다음과 같이 입력하십시오.
    return
  2. 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[#] 쓰기 상태에 있는 thread입니다. #는 쓰기 상태에 있는 thread의 총 수입니다.
rsleep[#] 읽기 상태에 있는 thread입니다. #는 읽기 상태에 있는 thread의 총 수입니다.
주: dbx 디버그 프로그램의 print 부속 명령은 기호로 된 rwlock 이름을 인식하며, 해당 오브젝트의 상태를 표시하는 데 사용될 수 있습니다.
플래그
read 상태가 읽기 모드에 있는 모든 rwlocks에 대한 정보를 표시합니다.
write 상태가 쓰기 모드에 있는 모든 rwlocks에 대한 정보를 표시합니다.
예제
  1. 모든 rwlocks에 대한 정보를 표시하려면 다음과 같이 입력하십시오.
    rwlock

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

    rwl flag_value owner status $rwl 1 $t1 write rsleeps[ 0]: wsleeps[ 0]:
  2. 쓰기 모드에 있는 모든 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 ] [ > >File ] [ 2>File ] [ 2> >File ] [ >&File ] [ > >&File]

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

플래그
<File File에서 입력을 받을 수 있도록 입력을 재지정합니다.
>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 부속 명령인 setName=Expression은 표시장치 이름의 값을 변경합니다.
  • Xwindows가 수행되지만, TERM 환경 변수가 새로운 창을 호출하기 위해 설정한 명령이 유효하지 않은 경우.
  • /tmp 디렉토리에서 프로그램에 대한 읽기 또는 쓰기 액세스 권한을 허용하지 않을 경우. dbx프로그램은 screen 명령이 실행될 때 이 디렉토리에서 작은 공간을 필요로 합니다.
  • 시스템이 새로운 Xwindow를 수용할 만한 자원을 충분히 가지고 있지 못한 경우.

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

Warning: dbx subcommand screen fails. dbx continues.

$xdisplay가 원격 표시장치로 설정되면, 사용자는 새로 작성된 Xwindow를 보지 못할 수도 있습니다.$xdisplay 설정이 올바르지 못하면, Xwindows 또는 다른 시스템 자원이 문제점을 보고합니다.

새로 작성되는 창을 사용자 정의로 구성하려면 .Xdefaults 파일에 있는 dbx_term 응용프로그램 이름으로 정의할 수 있습니다.

예제

dbx 명령 상호작용을 위해 Xwindow를 열려면 다음과 같이 입력하십시오.

screen

AIX General Programming Concepts: Writing and Debugging Programs Separating dbx Output From Program Output 및 AIX 버전 4 AIXwindows 프로그래밍 안내서에 있는 AIXwindows 개요를 참조하십시오.

set 부속 명령

set [ Variable=Expression ]

set 부속 명령은 dbx 디버그 프로그램 변수의 값을 정의합니다. 값은 Expression 매개변수에 의해 지정되고 프로그램 변수는 Variable 매개변수에 의해 지정됩니다. 변수의 이름은 디버그중인 프로그램내의 변수 이름과 상충되어서는 안 됩니다. 변수는 다른 명령 내의 해당 표현식으로 확장됩니다. set 부속 명령이 인수 없이 사용되면, 현재 설정되어 있는 변수가 표시됩니다.

set 부속 명령을 사용하면 다음과 같은 변수가 설정됩니다.

$catchbp 다음 명령이 실행되는 동안 중단점을 찾아냅니다.
$expandunions 상이한 레코드나 공용체의 각 부분에 대한 값을 표시합니다.
$frame 스택 추적 및 국지 변수 액세스를 위해 $frame 값에 의해 지정되어 있는 주소의 스택 프레임을 사용합니다.
$hexchars 16진수 값으로 문자를 출력합니다.
$hexin 16진수로 주소를 해석합니다.
$hexints 16진수 값으로 정수를 출력합니다.
$hexstrings 16진수로 문자 포인터를 인쇄합니다.
$hold_next contnextnexti 및 step 부속 명령을 실행하는 동안 수행 중인 thread를 제외한 모든 thread를 대기시킵니다. 이 변수를 설정하면 수행 중인 thread는 블록화된 thread 중 하나가 보유중인 잠금을 기다릴 수 있기 때문에 교착상태(deadlock)가 발생할 수 있습니다.
$ignoreload 사용자의 프로그램이 loadunload 또는 loadbind 서브루틴을 수행할 때 정지하지 않습니다.
$instructionset 디폴트 역어셈블리 모드를 대체합니다. 다음 리스트에는 가능한 Expression 매개변수 값이 포함되어 있습니다.
"default" dbx 프로그램이 수행 중인 구조를 지정합니다.
"com" PowerPC 및 POWER 구조의 일반 교차 모드의 명령 세트를 지정합니다. dbx 프로그램의 디폴트는 PowerPC 니모닉(Mnemonic)입니다.
"pwr" POWER 구조에 대한 명령 세트와 니모닉(Mnemonic)을 지정합니다.
"pwrx" POWER 구조의 POWER2 구현에 대한 명령 세트와 니모닉(Mnemonic)을 지정합니다.
"601" PowerPC 601 RISC 마이크로프로세서에 대한 명령 세트와 니모닉(Mnemonic)을 지정합니다.
"603" PowerPC 603 RISC 마이크로프로세서에 대한 명령 세트와 니모닉(Mnemonic)을 지정합니다.
"604" PowerPC 604 RISC 마이크로프로세서에 대한 명령 세트와 니모닉(Mnemonic)을 지정합니다.
"ppc" 선택사항인 명령을 제외한 PowerPC 구조에 정의된 명령 세트 및 니모닉(Mnemonic)을 지정합니다. 이 명령은 PowerPC 601 RISC 마이크로프로세서를 제외한 모든 PowerPC 구현에서 사용할 수 있습니다.
"any" 모든 유효한 PowerPC 또는 POWER 명령을 지정합니다. 중첩되는 명령 세트의 경우, 디폴트는 PowerPC 니모닉입니다.

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

$listwindow 함수의 근방에 있는 나열할 행 수와 list 부속 명령이 매개변수 없이 사용될 때 나열할 행 수를 지정합니다. 디폴트는 10행입니다.
$mapaddrs 주소 맵핑을 시작합니다. $mapaddrs를 설정하지 않으면 주소 맵핑이 정지됩니다.
$mnemonics 역어셈블리시에는 dbx 프로그램이 사용하는 니모닉 세트가 변경됩니다.
"default" 지정된 명령 세트와 가장 근접하는 니모닉을 지정합니다.
"pwr" POWER 구조에 대한 니모닉을 지정합니다.
"ppc" 선택사항인 명령을 제외한 PowerPC 구조 책자에 정의된 니모닉을 지정합니다.

Expression 매개변수 값이 설정되지 않은 경우, dbx 프로그램은 지정된 명령 세트와 가장 근접하는 니모닉을 사용합니다.

$noargs 부속 명령에서 whereupdowndump와 같은 인수를 생략합니다.
$noflregs registers 부속 명령에서 부동 소수점 레지스터를 생략합니다.
$octin 8진수로 주소를 해석합니다.
$octints 8진수로 정수를 인쇄합니다.
$repeat 입력된 명령이 없으면 이전 명령을 반복합니다.
$sigblock 사용자 프로그램으로 신호를 블록화합니다.
$stepignore 디버깅 정보를 사용할 수 없는 또다른 루틴을 호출하는 소스 행에서 step 명령이 수행될 때 dbx 명령의 동작을 제어합니다. 이 변수는 step 부속 명령이 디버깅 정보를 사용할 수 없는 대형 루틴으로 넘어갈 수 있도록 합니다. 다음 리스트에는 가능한 Expression 매개변수 값이 포함되어 있습니다.
"function" dbx 명령에 대한 next 부속 명령의 함수를 수행합니다. 이것이 디폴트 값입니다.
"module" 함수가 디버그 정보(예:시스템 라이브러리)를 사용할 수 없는 로드 모듈에 있는 경우, next 부속 명령의 함수를 수행합니다.
"none" 백그라운드에서 소스 정보가 사용 가능한 명령에 도달할 때까지 dbx명령에 대한 stepi 부속 명령 기능을 수행합니다. 그 시점에서dbx는 실행이 정지되었던 위치를 표시합니다.
$thcomp $thcomp가 설정되면, th- thread 명령에 의해 표시되는 정보는 압축된 형태로 표시됩니다.
$unsafeassign assign문의 양 끝에서 엄격한 유형 검사를 중단합니다. $unsafeassign 변수가 설정되었더라도 assign문의 양 끝에는 크기가 다른 기억장치 유형이 포함되지 않을 수 있습니다.
$unsafebounds 배열의 첨자 검사를 중단합니다.
$unsafecall 서브루틴이나 함수 호출을 위한 인수에 대한 엄격한 유형 검사를 중단합니다.
$unsafegoto goto 부속 명령 목적지 검사를 중단합니다.
$vardim 경계를 모르는 상태에서 배열을 인쇄하는 경우 사용할 차원 범위를 지정합니다. 디폴트 값은 10입니다.
$xdisplay multproc 부속 명령이나 screen 부속 명령과 함께 사용할 Xwindows 표시장치 이름을 지정합니다. 디폴트 값은 쉘 DISPLAY 변수의 값입니다.

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

예제
  1. 나열될 디폴트 행 번호를 20으로 변경하려면 다음과 같이 입력하십시오.
    set $listwindow=20
  2. assign 부속 명령에 대한 유형 검사를 사용하지 않으려면 다음과 같이 입력하십시오.
    set $unsafeassign
  3. PowerPC 601 RISC 마이크로프로세서에 대한 기계 명령을 역어셈블하려면 다음과 같이 입력하십시오.
    set $instructionset="601"

unset 부속 명령을 참조하십시오. 또한, AIX 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 행 편집기의 입력 모드에 놓입니다.

예제
  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

AIX General Programming Concepts: Writing and Debugging Programs running shell commands from dbx를 참조하십시오.

skip 부속 명령

skip [ Number ]

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

예제

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

skip 1

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

source 부속 명령

source File

source 부속 명령은 File 매개변수가 지정한 파일로부터 dbx 부속 명령을 읽어들입니다.

예제

cmdfile 파일에서 dbx 부속 명령을 읽으려면 다음과 같이 입력하십시오.

source cmdfile

AIX General Programming Concepts: Writing and Debugging Programs Reading dbx Subcommands from a File을 참조하십시오.

status 부속 명령

status >File ]

status 부속 명령은 현재 사용 중인 trace 및 stop 부속 명령을 표시합니다. > 플래그는 status 부속 명령의 출력을 File 매개변수에서 지정한 파일로 송신합니다.

플래그
>File File로 출력을 재지정합니다.

dbx 명령의 clear 부속 명령, delete 부속 명령, stop 부속 명령 및 trace 부속 명령을 참조하십시오.

또한, AIX General Programming Concepts: Writing and Debugging Programs Setting and Deleting Breakpoints도 참조하십시오.

step 부속 명령

step [ Number ]

step 부속 명령은 응용프로그램의 소스 행을 수행합니다. Number 매개변수를 사용하여 실행될 행의 수를 지정하십시오. Number 매개변수를 생략하면, 디폴트는 1이 됩니다.

복수 thread 응용프로그램에서 step 부속 명령을 사용하면, 모든 사용자 thread는 조작중에 수행되지만 프로그램은 수행 중인 thread가 지정된 소스 행에 도달할 때까지 계속 실행됩니다. thread만이 수행되도록 하려면, set 부속 명령을 사용하여 $hold_next 변수를 설정하십시오. 이 변수를 설정하면 수행 중인 thread는 블록화된 thread 중 하나가 보유중인 잠금을 기다릴 수 있기 때문에 교착상태(deadlock)가 발생할 수 있습니다.

주: 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이 됩니다.

복수 thread 응용프로그램에서 사용될 경우, stepi 부속 명령은 수행 중인 thread만을 진행합니다. 다른 모든 사용자 thread는 정지된 채 남아 있습니다.

예제
  1. 한 개의 기계 명령 실행을 계속하려면, 다음과 같이 입력하십시오.
    stepi
  2. 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 부속 명령을 정지시키십시오.

복수 thread 응용프로그램에서 사용자 thread가 중단점과 만나게 되면 모든 사용자 thread가 정지됩니다. 아래의 예제 9와 같이, 사용자가 조건을 지정하지 않으면 소스 행이나 함수에 설정된 중단점은 행이나 함수를 실행하는 사용자 thread와 만나게 됩니다. 자동으로 조건을 지정하는 별명은 다음과 같습니다.

  • bfth(FunctionThreadNumber)
  • blth(SourceLineThreadNumber)

ThreadNumber는 thread 부속 명령이 보고한 대로의 기호로 된 thread 이름의 숫자 부분입니다(예를 들어, 5는 thread 이름 $t5의 ThreadNumber입니다). 별명은 실제로 다음에 표시된 확장된 부속 명령을 작성하는 마크로입니다.

stopi at &Function if ($running_thread == ThreadNumber) stop at SourceLine if ($running_thread == ThreadNumber)
플래그
at SourceLine 행 번호를 지정합니다.
if Condition 조건을 참으로 지정합니다.
in Procedure 호출할 프로시듀어를 지정합니다.
예제
  1. main 프로시듀어의 첫째 문장에서 실행을 정지하려면 다음과 같이 입력하십시오.
    stop in main
  2. 변수 값 x가 실행 행 12에서 변경될 때 실행을 정지하려면, 다음과 같이 입력하십시오.
    stop x at 12
  3. 파일 sample.c에 있는 행 5에서 실행을 정지하려면 다음과 같이 입력하십시오.
    stop at "sample.c":5
  4. dbx가 func1 내의 서브루틴을 실행할 때마다 x 값을 확인하려면, 다음과 같이 입력하십시오.
    stop in func1 if x = 22
  5. dbx가 func1을 실행할 때마다 x 값을 확인하려면 다음과 같이 입력하십시오.
    stopi at &func1 if x = 22
  6. Variable 값이 바뀔 때 프로그램을 정지하려면 다음과 같이 입력하십시오.
    stop Variable
  7. Condition이 참일 경우마다 프로그램을 정지하려면 다음과 같이 입력하십시오.
    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 명령은 이벤트 식별자별로 이벤트를 삭제합니다. clear 명령은 행 번호별로 중단점을 삭제합니다.
  9. thread $t5가 실행될 때만 func1 시작에 중단점을 위치시키려면, 다음 해당 명령 중의 하나를 입력하십시오.
    stopi at &func1 if ($running_thread == 5)
    또는
    bfth(func1, 5)

clear 부속 명령, delete 부속 명령, stopi 부속 명령, trace 부속 명령을 참조하십시오. AIX General Programming Concepts: Writing and Debugging Programs의 Setting and Deleting Breakpoints도 참조하십시오.

stopi 부속 명령

stopi { [Address] [at Address in Procedure ] [ if Condition ]}

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

  • ifCondition 플래그를 사용하는 경우, 조건 참이 되면 프로그램이 정지합니다.
  • Address 매개변수를 사용하면, Address 내용이 변경될 때 프로그램이 정지합니다.
  • at Address 플래그를 사용하면, 지정된 주소에 정지가 설정됩니다.
  • in Procedure 플래그를 사용하면, Procedure가 호출될 때 프로그램이 정지합니다.
플래그
if Condition 조건을 참으로 지정합니다.
in Procedure 호출할 프로시듀어를 지정합니다.
at Address 기계 명령 주소를 지정합니다.
예제
  1. 주소 0x100020f0에서 실행을 정지하려면 다음과 같이 입력하십시오.
    stopi at 0x100020f0
  2. 주소 0x100020f0 의 내용을 변경하려면 다음과 같이 입력하십시오.
    stopi 0x100020f0
  3. 주소 0x100020f0의 내용을 thread $t1이 변경할 때 실행을 정지하려면 다음과 같이 입력하십시오.
    stopi 0x200020f0 if ($running_thread == 1)

stop 부속 명령도 참조하십시오. 또한, AIX General Programming Concepts: Writing and Debugging Programs Debugging at the Machine Level with dbx도 참조하십시오.

thread 부속 명령

선택한 thread 표시

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

개별 thread 선택

thread current [ - ] ThreadNumber

thread 보류 또는 해제

thread { hold | unhold } [ - ] [ ThreadNumber ... ]

표시된 옵션에 대한 도움말

thread {help}

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

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

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

thread 사용자 thread의 기호 이름을 $t ThreadNumber 양식으로 나타냅니다.
state-k 사용자 thread가 커널 thread에 접속되어 있는 경우, 커널 thread 상태를 나타냅니다. 각 상태는 수행 중이면 run, 대기중이면 wait, 일시중단된 경우면 susp, 종료되면 term입니다.
wchan 커널 thread가 대기 또는 정지 상태인 이벤트를 나타냅니다(사용자 thread가 커널 thread에 연결되어 있는 경우).
state-u 사용자 thread 상태입니다. 가능한 상태는 수행 중블록종료입니다.
k-tid 커널 thread 식별자를 나타냅니다(사용자 thread가 커널 thread에 연결되어 있는 경우).
mode 사용자 thread가 정지된 모드(커널 또는 사용자)임을 나타냅니다(사용자 thread가 커널 thread에 연결되어 있는 경우).
held 사용자 thread가 유지되고 있는지를 나타냅니다.
scope 사용자 thread의 경합 유효범위를 나타냅니다. 시스템이나 프로세스 경합 유효범위의 경우, 이것은 각각 sys나 pro가 됩니다.
function 사용자 thread 함수 이름을 나타냅니다.

두번째 형식의 thread 부속 명령으로 표시되는 정보는 다음과 같습니다. 디폴트로, thread 부속 명령th -의 경우, 정보는 long 양식으로 표시됩니다.

thread 사용자 thread의 기호 이름을 $t ThreadNumber 양식으로 나타냅니다.

커널 thread 관련 정보

tid 사용자 thread 식별자입니다(사용자 thread가 커널 thread에 접속되어 있는 경우).
pri 커널 thread의 우선순위입니다.
sched 커널 thread의 스케줄링 방침입니다. 이는 스케줄링 방식에 따라 fifo는 fif, other는 oth, 라운드 로빈(round robin)은 rr로 표시됩니다.
state 사용자 thread가 커널 thread에 접속되어 있는 경우, 커널 thread 상태를 나타냅니다. 각각의 상태에 따라 실행중일 때는 run, 대기중일 때는 wait, 일시중단일 때는 susp, zombie 상태일 때는 zomb로 표시됩니다.

사용자 thread 관련 정보

tid 사용자 thread 식별자입니다.
pri userl thread의 우선순위입니다.
sched 사용자 thread의 스케줄 방침입니다. 이는 스케줄링 방식에 따라 fifo는 fif, other는 oth, 라운드 로빈(round robin)은 rr로 표시됩니다.
state 사용자 thread 상태입니다. 이는 수행 중, 작성 중, 일시중단, 블록, 수행 가능 또는 종료일 수 있습니다.
state 사용자 상태를 16진수로 나타냅니다.
flags pthread 플래그의 값을 16진수로 나타냅니다.
wchan 커널 thread가 대기 또는 정지 상태인 이벤트를 나타냅니다(사용자 thread가 커널 thread에 연결되어 있는 경우).
mode 사용자 thread가 정지된 모드(커널 또는 사용자)임을 나타냅니다(사용자 thread가 커널 thread에 연결되어 있는 경우).
held 사용자 thread가 유지되고 있는지를 나타냅니다.
scope 사용자 thread의 경합 범위를 나타냅니다. 이는 시스템 또는 프로세스 경합 범위의 경우 sys 또는 pro가 됩니다.
cancellation
pending 취소가 지연중인지 여부를 나타냅니다.
state 취소의 모드 및 상태를 나타냅니다.

취소가 지연중이 아니고 상태 및 모드가 각각 작동 가능 및 지연됨이면 ed로 표시되고, 취소 상태 및 모드가 작동 가능 상태이고 비동기이면 ea로 표시되며, 모드가 작동 불능 상태이면 d로 표시됩니다.

최소가 지연중이고 취소 상태 및 모드가 각각 작동 가능 및 지연됨이면 ED로 표시되고, 취소 상태 및 모드가 작동 가능이고 비동기이면 EA로 표시되며, 모드가 작동 가능 상태가 아니면 D로 표시됩니다.

joinable thread가 결합 가능한지 여부를 나타냅니다.
boosted thread에 사용된 값을 나타냅니다.
function 사용자 thread 함수 이름을 나타냅니다.
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 부속 명령의 두번째 양식은 현재 thread를 선택하는 데 사용됩니다. dbx 디버그 프로그램의printregisters 및 where 부속 명령은 모두 현재 thread의 처리시 작용합니다. 현재 thread가 커널 모드에 있는 경우 registers 부속 명령은 레지스터를 표시할 수 없습니다.

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

주: dbx 디버그 프로그램의 print 부속 명령은 기호 thread 이름을 인지하며, 해당 오브젝트 상태를 표시하는 데 사용할 수 있습니다.
플래그
current ThreadNumber 매개변수가 제공되지 않으면, 현재 thread를 표시합니다. ThreadNumber 매개변수가 제공되면, 지정된 사용자 thread를 현재 thread로 선택합니다.
help th - 명령이 사용될 때 표시된 thread 옵션에 대한 모든 정보를 표시합니다.
hold ThreadNumber 매개변수가 제공되지 않은 경우, 모든 사용자 thread를 보류하고 표시합니다. 하나 이상의 ThreadNumber 매개변수가 제공되면 지정된 사용자 thread를 보류하고 표시합니다.
unhold ThreadNumber 매개변수가 제공되지 않은 경우, 이전에 보류했던 모든 사용자 thread를 해제하여 표시합니다. 하나 이상의 ThreadNumber 매개변수가 제공되면 지정된 사용자 thread를 해제하여 표시합니다.
info ThreadNumber 매개변수가 제공되지 않은 경우, 모든 사용자 thread를 long 양식으로 표시합니다. 하나 이상의 ThreadNumber 매개변수가 제공되면 지정된 사용자 thread 리스트를 long 양식으로 표시합니다.

위의 모든 플래그는 [-] 옵션을 취합니다. 이 옵션을 지정할 경우, set $thcomp 옵션을 설정하지 않으면 표시되는 thread 정보는 두번째 형식 및 long 양식으로 표시됩니다.

run run 상태에 있는 thread를 표시합니다.
susp susp 상태에 있는 thread를 표시합니다.
term term 상태에 있는 thread를 표시합니다.
wait wait 상태에 있는 thread를 표시합니다.
예제
  1. 대기 상태에 있는 thread에 대한 정보를 표시하려면, 다음과 같이 입력하십시오.
    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에 대한 정보를 표시하려면, 다음과 같이 입력하십시오.
    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로 하려면, 다음과 같이 입력하십시오.
    thread current 4 
  4. thread 번호 2를 보류하려면, 다음과 같이 입력하십시오.
    thread hold 2
  5. 두번째 형식으로 대기 상태에 있는 thread에 대한 정보를 표시하려면, 다음을 입력하십시오.
    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에 대한 정보를 표시하려면, 다음과 같이 입력하십시오.
    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 부속 명령을 참조하십시오.

AIX Version 4.3 General Programming Concepts: Writing and Debugging Programs의 Creating Threads도 참조하십시오.

trace 부속 명령

trace SourceLine Expression at SourceLine Procedure | [ Variable ] [ at SourceLine inProcedure ] ] [ if Condition ]

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

디폴트로서 추적은 프로세스에 기반을 두고 있습니다. thread 기반 추적을 하려면, 아래의 예제 8과 같은 조건으로 thread를 지정하십시오.

플래그
at SourceLine 추적중인 표현식이 있는 소스 행을 지정합니다.
if Condition 추적 시작 조건을 지정합니다. if Condition이 참일 때만 추적을 시작합니다.
in Procedure 사용할 프로시듀어를 지정하여 프로시듀어 또든 추적중인 변수를 찾습니다.
예제
  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. thread $t1이 만든 변수 x에 대한 변경을 추적하려면 다음과 같이 입력하십시오.
    (dbx) trace x if ($running_thread == 1)

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

tracei 부속 명령

tracei [ [ Address ] [ at Address | in Procedure ] | Expression at Address ] [ if Condition ]

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

  • Address 플래그가 포함된 경우, Address 매개변수가 지정한 주소 내용을 변경합니다.
  • at Address 매개변수가 지정되는 경우, at Address에 있는 명령이 수행됩니다.
  • in Procedure 플래그가 포함되어 있는 경우, Procedure에서 지정한 프로시듀어가 사용됩니다.
  • if Condition 플래그가 포함되어 있는 경우, Condition 매개변수가 지정한 조건은 참입니다.
플래그
at Address 주소를 지정합니다. 이 주소에서 명령이 실행될 때 추적이 가능합니다.
if Condition 조건을 지정합니다. 이 조건이 부합될 때 추적이 가능합니다.
in Procedure 프로시듀어를 지정합니다. 이 프로시듀어를 사용 중일 때 추적이 가능합니다.
예제
  1. 실행된 각 명령을 추적하려면 다음과 같이 입력하십시오.
    tracei
  2. 주소 0x100020f0에서 명령이 실행될 때마다 추적하려면 다음과 같이 입력하십시오.
    tracei at 0x100020f0
  3. main 프로시듀어가 실행되고 있는 동안 메모리 위치 0x20004020 변경 내용을 추적하려면 다음과 같이 입력하십시오.
    tracei 0x20004020 in main
  4. thread $t4가 주소 0x100020f0에서 명령을 실행할 때마다 추적하려면 다음과 같이 입력하십시오.
    tracei at 0x100020f0 if ($running_thread == 4)

trace 부속 명령을 사용하십시오. 또한, AIX General Programming Concepts: Writing and Debugging Programs Debugging at the Machine Level with dbx도 참조하십시오.

unalias 부속 명령

unalias Name

unalias 부속 명령은 Name 매개변수가 지정한 별명을 삭제합니다.

예제

printx라고 명명된 별명을 삭제하려면 다음과 같이 입력하십시오.

unalias printx

alias 부속 명령을 참조하십시오. 또한, AIX General Programming Concepts: Writing and Debugging Programs Creating Subcommand Aliases도 참조하십시오.

unset 부속 명령

unset Name

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

예제

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

unset $noflregs

set 부속 명령을 참조하십시오. 또한, AIX General Programming Concepts: Writing and Debugging Programs Changing Print Output With Special Debugging Variables도 참조하십시오.

up 부속 명령

up Count ]

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

예제
  1. 현재 함수를 스택 레벨 2보다 위쪽으로 이동하려면, 다음과 같이 입력하십시오.
    up 2
  2. 스택에서 현재 기능을 표시하려면 다음과 같이 입력하십시오.
    up 0

down 부속 명령을 참조하십시오. 또한, AIX General Programming Concepts: Writing and Debugging Programs Changing the Current File or ProcedureDisplaying Stack Trace도 참조하십시오.

use 부속 명령

use [ Directory ... ]

use 부속 명령은 dbx 디버그 프로그램이 소스 파일을 찾을 때 탐색할 디렉토리 리스트를 설정합니다. 인수 없이 use 부속 명령을 지정하면, 탐색할 현재 디렉토리 리스트가 표시됩니다.

@ (at 기호)는 dbx 프로그램이 오브젝트 파일(있는 경우)에 있는 전체 경로 이름 정보를 찾도록 하는 특수 기호입니다. 사용자가 @라는 상대적인 디렉토리를 찾도록 하려면, 탐색 경로에 ./@를 사용해야 합니다.

use 부속 명령은 +(더하기 부호)를 사용하여 탐색할 디렉토리 리스트에 디렉토리를 추가합니다. +라는 디렉토리가 있으면, 디렉토리의 전체 경로 이름을 지정하십시오(예: ./+ 또는 /tmp/+).

예제
  1. 탐색할 디렉토리 리스트를 현재 디렉토리(.), 상위 디렉토리 (..), /tmp 디렉토리로 변경하려면 다음과 같이 입력하십시오.
    use . .. /tmp
  2. 탐색할 디렉토리 리스트를 현재 디렉토리(.), 컴파일 시간에 소스 파일이 위치했던 디렉토리(@), ../source 디렉토리로 변경하려면 다음과 같이 입력하십시오.
    use . @ ../source
  3. /tmp2 탐색할 디렉토리를 디렉토리 리스트에 추가하려면 다음과 같이 입력하십시오.
    use + /tmp2

edit 부속 명령, list 부속 명령도 참조하십시오.

whatis 부속 명령

whatis Name

whatis 부속 명령은 Name의 선언을 표시합니다. 여기서, Name 매개변수는 변수, 프로시듀어 또는 함수 이름을 나타내며, 블록 이름으로 규정되는 경우도 있습니다.

주: dbx 디버그 프로그램이 수행되는 동안만 whatis 부속 명령을 사용하십시오.
예제
  1. 변수 x의 선언을 표시하려면 다음과 같이 입력하십시오.
    whatis x
  2. 프로시듀어 main의 선언을 표시하려면, 다음과 같이 입력하십시오.
    whatis main
  3. main 함수 내에서 변수 x의 선언을 표시하려면 다음과 같이 입력하십시오.
    whatis main.x
  4. 열거, 구조체 또는 공용체 태그(또는 Pascal의 해당 태크)의 선언을 인쇄하려면, $$TagName을 사용합니다.
    (dbx) whatis $$status enum $$status { run, create, delete, suspend };

where 부속 명령

where [ >File ]

where 부속 명령은 활동중인 프로시듀어 및 함수 리스트를 표시합니다. >File 플래그를 사용하여, 이 부속 명령에 대한 출력을 지정된 파일로 재지정할 수 있습니다.

플래그
>File 지정된 파일로 출력을 재지정합니다.

up 부속 명령 및 down 부속 명령을 참조하십시오. 또한, AIX General Programming Concepts: Writing and Debugging Programs Displaying a Stack Trace도 참조하십시오.

whereis 부속 명령

whereis Identifier

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

예제

이름이 x인 모든 기호에 대해 규정된 이름을 표시하려면 다음과 같이 입력하십시오.

whereis x

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

which 부속 명령

which Identifier

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

예제

x 기호의 전체 규정을 표시하려면 다음과 같이 입력하십시오.

which x

whereis 부속 명령을 참조하십시오. 또한, AIX General Programming Concepts: Writing and Debugging Programs Scoping of Names도 참조하십시오.

File

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

관련 정보

adb 명령, cc 명령.

a.out 파일, core 파일.

AIX General Programming Concepts: Writing and Debugging Programs dbx Symbolic Debug Program Overview 및 Using the dbx Debug Program도 참조하십시오.

[출처] [Unix] dbx 사용|작성자 미토

'OS > 리눅스 & 유닉스' 카테고리의 다른 글

make 확장자 규칙  (0) 2011.11.24
make 관련 한글 메뉴얼 사이트  (0) 2011.11.24
find 03  (0) 2011.11.24
find 02  (0) 2011.11.24
find 01  (0) 2011.11.24
:

find 03

OS/리눅스 & 유닉스 2011. 11. 24. 11:03

find [찾을 디렉토리경로]  [찾기옵션]  [찾은후행할 작업]

[옵션]
-empty              : 비어있는 파일을 찾는다.
-uid UID            : 지정된 UID를 갖는 파일을 찾는다. 
-gid GID            : 지정된 GID를 갖는 파일을 찾는다. 
-group 그룹명    : 지정된 group을 가진 파일을 찾는다. 
-name              : 지정된 형식의 패턴을 가지는 파일을 찾는다.
-newer             : 지정된 파일 이후에 생성된 파일을 찾는다.
-perm              : 지정된 퍼미션을 가진 파일을 찾는다. 
-used 일자수    : 최근 n일 이후에 변경된 파일을 찾는다.
-user               : 지정된 파일을 소유하고 있는 소유자의 모든 파일을 찾는다.
-size               : 지정된 크기를 갖는 파일찾는다

[작업]
-print                       : 찾은 파일리스트를 보여준다.
-exec “수행명령어”   : 검색된 파일을 대상으로 “수행명령어”(쉘명령어)를 실행한다.

 

------------------------------------------------------------------------------------


find / -uid 119 -print      

- 특정uid 로찾기

 

find / -user cdral -print    

-  특정 아이디로 찾기

 

find /home/cdral -name *.txt -print   

- 특정디렉토리에서 특정파일찾기

 

find /home/cdral -name *.txt -exec rm -f {} \;  

- 특정디렉토리에서 특정파일찾아서 지우기
-exec rm -f {} 의미가 찾은파일을 {} 하나씩 대입하여 삭제한다는뜻 ( {} \; 공백주의)

 

find / -user cdral -exec ls -al {} \;  

- 특정유저로된 파일찾기

 

find /var -size +102400k -exec ls -al {} \;  

- 특정용량 이상되는 파일찾기

 

find /home/cdral -perm 777 -exec ls -l {} \;  

 - 특정퍼미션 파일찾기

 

find / -used 3 -exec ls -l {} \;   

- 지정된 일자 3일전부터 현재까지 변경된적이 있는파일 찾기

 

find /home/cdral -type d -exec ls -ll {} \;  

- 특정디렉토리안에 모든 디렉토리 찾기

 

find /usr/bin -type l -exec ls -al {} \;   

- 특정디렉토리안에 모든 링크파일 찾기 보안점검시체크

 

find / -user root -perm 4000 -print  

- root 소유의 setuid파일 찾기 보안점검시체크

 

find /dev/ -type f -exec ls -l {} \;  

- /dev 디렉토리내 일반파일(-type f)찾기 보안점검시체크

 

find / -name .rhost -exec ls -l {} \;  

- .rhost 파일 찾기  보안점검시체크

 

find / -nouser -o -nogroup -print 

- 소유자와 소유그룹이 없는 파일찾기 -o 는 OR의 역할

 

find /home -type f -exec grep -i "문자" /dev/null {} \;  

- 특정문자를 포함한 파일찾기


find ./ -name "*.txt" -print -exec grep -n "test" {} \;

- 확장자가 txt인 파일들을 찾은다음 test라는 text를 포함하는 문자의 행 까지 출력

 

 find /home -size +20000c -print

- /home에서 파일의 크기가 20,000바이트 이상인 것만 찾아라

 

 find /home -size 10000c -print

- /home에서 파일의 크기가 10000바이트 인것만 찾아라

 

find /usr/lib -name "m*.c" -print

- /usr/lib에서 m*.c 인 것을 모두 찾아라

 

find /home -name core -print exec rm {} \;

-/home 밑에 core 파일을 찾아 이를 삭제 하시오.

 

find / -perm 04000 -user root exec ls -l {} \;

-owner가 root이고 SETUID를 가지는 파일을 모두 찾아라

 

find / -ctime -3 -print

- 최근 3일 이내에 쓰여진 파일을 찾아라

 

 find / -ctime -3 -size +10000c -exec ls -l {} \;

- 최근 3일 이내에 쓰여지고, 10,000바이트 이상인 파일이나, 디렉토리를 찾아라.

 

find . -name "*.gz" -exec gunzip {} \;

- unzip을 사용해서 여러개의 zip 을 동시에 풀기

 

'OS > 리눅스 & 유닉스' 카테고리의 다른 글

make 관련 한글 메뉴얼 사이트  (0) 2011.11.24
dbx 명령  (0) 2011.11.24
find 02  (0) 2011.11.24
find 01  (0) 2011.11.24
grep 옵션  (0) 2011.11.24
:

find 02

OS/리눅스 & 유닉스 2011. 11. 24. 11:02

find란 ?

윈도우에서 어떤 파일을 찾고싶을 때 찾는위치를 기준으로 하여 특정 파일을 검색해주는 것과 같이

리눅스에서도 find라는 명령어를 사용하게 되면 조건에 맞는 파일을 찾을 수 있고 윈도우에서 그 찾은 파일들을 실행을

할 수 있는 것처럼 리눅스에서도 그 찾은 파일들에 대해 명령을 실행할 수도 있다.

 

이러한 find명령어의 막강한 기능 중 하나는 모든 파일 내에서 특정 파일을 찾거나, 최근에 수정된 파일을 찾거나

 n바이트의 용량을 가진 파일을 찾기 등과 같은 정말 많은 기능을 가지고 있다.

 

그러면 이제 find명령어를 사용하는 방법과 옵션들에 대해 알아보자.

 

# find [directory] [option] [action]

 

먼저 directry는 찾고자 하는 디렉토리의 기준 위치를 지정해 준다.

[디렉토리 경로]

. : 현재 디렉토리를 기준으로 검색을 한다.

/ : 루트 디렉토리를 기준으로 모든 디렉토리의 파일을 찾는다.

 

그 다음 option에는 매우 많은 검색 조건들이 포함되며 다음과 같은 것들이 있다.

 

[검색 조건]

-name filename : 파일 이름으로 찾는다.

-atime +n : n일 이전에 접근한 파일을 찾는다.

-atime -n : n일 이내에 접근한 파일을 찾는다.

-mtime +n : 파일이 수정된지 n일이 지난 파일

-mtime -n : 파일이 수정된지 n일이 안된 파일

-perm nnn : 파일권한이 nnn인 파일을 찾는다.

-type x : 파일 타입이 x인 파일들을 찾는다.

-size +n : 파일크기가 n이상인 파일들을 찾는다.

-links n : 링크된 개수가 n인 파일들을 찾는다.

-user username : user이름으로 찾는다.

-group groupname  : group이름으로 찾는다.

-uid UID : 지정한 UID값을 가진 파일들을 찾는다.

 

마지막 action에는 그 찾은 파일들에 대해 어떻게 처리할 것인지 처리방법이 있다.

 

[처리 방법]

-print : 찾은 파일의 절대 경로명을 화면에 출력한다.

-exec command {} \; : 찾은 파일들에 대해 command(명령어)를 실행한다.

-ok command : exec와 비슷하나 명령어를 적용하기 전에 물어본다.

 

다음 예제를 봐서 실습하자.

 

# find . -name *aaa

현재 디렉토리 이하에 전체에서 앞에 무엇이 오던지 간에 aaa가 포함된 파일 및 폴더 찾기

 

# find . -name aaa*

현재 디렉토리를 기준으로 하여 aaa로 시작하는 모든 파일 및 폴더를 찾는다.

 

# find / -mtime -1

'/' 최상위 디렉토리를 기준으로 하여 모든 디렉토리에서  24시간 이내 수정된 모든 파일 및 폴더를 찾는다.

 

# find . -name {a,b,c,d}.txt

현재 디렉토리와 하위디렉토리에서  a.txt, b.txt, c.txt, d.txt 파일을 찾는다.

 

# find / -user user1 -exec rm {} \;

'/'를 기준으로 하여 'user1'이라는 유저가 만든 모든 파일을 찾아 삭제한다.

 

# find /home '*.txt' -exec rm {} \;

'/home'디렉토리를 기준으로 하여 하위디렉토리에서 .txt라는 확장자 이름을 가진 모든 파일을 찾아 삭제한다.

 

# find ~root -name *.jsp -print 로 끝나는 파일 찾기

root유저의 홈 디렉토리아 이하 전체에서 .jsp로 끝나는 파일을 찾는다.

 

# find /root -size +1000k

/root 디렉토리 이하 전체에서 크기가 1000k 이상인 파일을 찾는다.

 

# find / -name *.ppt -exec mv {} /tmp \;

모든 디렉토리중 ppt문서만 찾아서 /tmp라는 디렉토리로 이동시킨다.

 

# find /dev -type d -print

파일 타입이 d인 파일을 찾아 경로명을 화면에 출력한다.

 

# find /home -name text -exec ls -l {} \;

파일 이름이 text인 파일을 찾아서 ls -l명령어를 적용한다.

 

# find /home -atime +30 -print

30일 이전에 접근되었던 파일을 찾는다.

 

#find /home -mtime -7 -print

7일 이내에 수정된 적이 있는 파일을 찾는다.

 

# find /tmp -type l -exec ls -ila {} \;

/tmp 디렉토리 이하에서 링크 파일을 찾아 상세정보를 출력

 

# find / -name '[b,u][c,g]*' -print

첫번째 글자가 b 또는 u로 시작하고 두번째 글자가 c또는 g로 시작하는 모든 파일 찾기

'OS > 리눅스 & 유닉스' 카테고리의 다른 글

dbx 명령  (0) 2011.11.24
find 03  (0) 2011.11.24
find 01  (0) 2011.11.24
grep 옵션  (0) 2011.11.24
유닉스 작업 시간 측정 (마이크로세컨드)  (0) 2011.11.21
:

find 01

OS/리눅스 & 유닉스 2011. 11. 24. 11:02

유닉스에서 작업을 하다보면 많이 사용하는 명령어 중에 하나이다.

find 는 어떤 파일을 찾고자 할때 사용한다.

 

# 현재 위치에서 하위디렉토리가지 찾고자하는 파일을 찾는다.
find . -name "samplefile.txt" 
# /tmp/pgm/ 위치에서 하위디렉토리가지 찾고자하는 파일을 찾는다.
find /tmp/pgm/ -name "samplefile.txt" 
# 현재 위치에서 하위디렉토리가지 sample 이란 단어로 시작하는 모든 파일을 찾는다.
find . -name "sample*" 
# 현재 위치에서 하위디렉토리가지 sample 이란 단어로 포함하는 모든 파일을 찾는다.
find . -name "*sample*"

# 현재 위치에서 하위디렉토리가지 ".txt"로 끝나는 파일을 찾고 찾은 파일은 매개변수로 사용하여 grep하여  파일안에 sample 단어가 있는 내용을 출력
find . -name "*.txt" | xargs grep "sample"

이와 비슷하게 사용하는 명령어들

find . -print | xargs grep "파일명"      // 파일명,문자열이 들어있는 행 모두 화면에 출력..
find . -name '*.txt' -exec grep "sample" {} \;  // 파일명은 출력안하고 찾고자하는 문자열의 행만 출력

# 현재 위치에서 '-type d'(디렉토리융형) 디렉토리를 찾는데 이름이 aa 로 시작하는 디렉토리를 찾아라
find . -type -d -name "aa*"

 

 # 현재위치에서 파일만 조회하고 "ctisql" 로 시작하는 단어를 찾고 찾은 파일중 현재일자로 부터 2일전 파일만 찾음
find . -type f -name "ctisql*" -mtime 2

'OS > 리눅스 & 유닉스' 카테고리의 다른 글

find 03  (0) 2011.11.24
find 02  (0) 2011.11.24
grep 옵션  (0) 2011.11.24
유닉스 작업 시간 측정 (마이크로세컨드)  (0) 2011.11.21
[Unix] 시간측정  (0) 2011.11.18
:

grep 옵션

OS/리눅스 & 유닉스 2011. 11. 24. 11:01

◎ Grep

- 파일 전체를 뒤져 정규 표현식에 대응하는 모든 행들을 출력한다.

- Syntex : grep <word> <filename>

 

◇ option

문자

의미

 -b

 검색결과의 각 행 앞에 검색된 위치의 블록 번호 표시.

 검색 내용이 디스크의 어디쯤 있는지 위치를 알아내는데 유용하다.

 -c

 검색 결과를 출력하는 대신, 찾아낸 행의 총수를 출력한다.

 -h

 파일 이름을 출력하지 않는다.

 -i

 대소문자를 구분하지 않는다. (대문자와 소문자 동일 취급)

 -l

 패턴이 존재하는 파일의 이름만 출력한다.

 -n

 파일 내에서 행 번호를 함께 출력한다. (새로 검색한 목록의 행번호가 아니라 원래 문서가 가지고 있는 파일 자체의 문서번호를 출력한다.)

 -s

 에러 메시지 외에는 출력하지 않는다. 종료 상태를 검사할 때 유용하게 사용.

 -v

 패턴이 존재하지 않는 행만 출력한다.

 -w

 패턴 표현식을 하나의 단어로 취급하여 검색한다.

 

[출처] 리눅스 Grep|작성자 7LeaF

'OS > 리눅스 & 유닉스' 카테고리의 다른 글

find 02  (0) 2011.11.24
find 01  (0) 2011.11.24
유닉스 작업 시간 측정 (마이크로세컨드)  (0) 2011.11.21
[Unix] 시간측정  (0) 2011.11.18
유닉스 chmod 값  (0) 2011.11.14
:

유닉스 작업 시간 측정 (마이크로세컨드)

OS/리눅스 & 유닉스 2011. 11. 21. 14:59
struct timeval fstart_time, fend_time;
char ftime[10];
long fstime, fetime, frtime, fsec, fusec;

gettimeofday(&fstart_time, NULL);
memset(ftime,0,sizeof(ftime));

===========================작업=============================

 gettimeofday(&fend_time, NULL);
 
    fstime = fstart_time. tv_sec * 1000000 + fstart_time.tv_usec;
    fetime = fend_time.tv_sec* 1000000 + fend_time.tv_usec;

    frtime = fetime - fstime;
    if(frtime>=1000000)
    {
    fsec = frtime / 1000000;
    fusec = frtime - ((frtime / 1000000)*1000000);
    }
    else
    {
    fsec = 0;
    fusec = frtime;
    }
    sprintf(ftime,"%ld.%06ld",fsec, fusec); 

'OS > 리눅스 & 유닉스' 카테고리의 다른 글

find 01  (0) 2011.11.24
grep 옵션  (0) 2011.11.24
[Unix] 시간측정  (0) 2011.11.18
유닉스 chmod 값  (0) 2011.11.14
waitpid  (0) 2011.11.08
:

[Unix] 시간측정

OS/리눅스 & 유닉스 2011. 11. 18. 16:54
#include <time.h>
........................

struct timeval start_time, end_time;

gettimeofday(& start_time, NULL);

.............................. <시간측정할 처리 진행> .....................................

gettimeofday(& end_time, NULL);

end_time.tv_usec = end_time.tv_usec - start_time.tv_usec;
end_time.tv_sec = end_time.tv_sec - start_time. tv_sec;
if( end_time.tv_usec < 0 )
{
    end_time.tv_usec += 1000000;
}

/* 100만분의 1초를 1000으로 나눠 1000분의 1초로 만든다. */
printf( "recognition time : (%ld.%ld m sec)\n", end_time.tv_sec, end_time.tv_usec/1000);




'OS > 리눅스 & 유닉스' 카테고리의 다른 글

grep 옵션  (0) 2011.11.24
유닉스 작업 시간 측정 (마이크로세컨드)  (0) 2011.11.21
유닉스 chmod 값  (0) 2011.11.14
waitpid  (0) 2011.11.08
wait(), waitpid()  (0) 2011.11.08
:

유닉스 chmod 값

OS/리눅스 & 유닉스 2011. 11. 14. 20:48

유닉스 또는 리눅스의 권한에 대하여 그리고 권한 변경에 대하여 알아 보겠습니다.

 

UNIX 권한은  10자리로 표현 됩니다.


10자리의 의미를 알려면 1자리/3자리/3자리/3자리로 나누어서 보면 괜잖습니다.

 

우리가 눈여겨 볼 권한 부분은 빨간색 부분입니다.

 

<r : 읽기권한, w : 쓰기권한, x : 실행권한>


디렉토리(1자리), 소유자권한(2~4자리), 그룹권한(5~7자리), 전체권한(8~10자리) 입니다.

 

자세한 살펴 보면
 

첫번째자리 d(디렉토리),-(파일) 즉 예제 그림에서 1개는 디렉토리이고 1개는 파일입니다.

 

두번째자리 3개(소유자권한) rwx : 소유자의 권한이 읽고/쓰고/실행  권한이 있다는 것을 말합니다.

 

세번째자리 3개(그룹권한) rw- : 그룹권한은 읽고/쓰기 권한만 있다는  것을 말합니다.

 

네번째자리 3개(전체권한/기타권한) -w- : 전체권한은 쓰기 권한만 있다는 것을 말합니다.

 

그럼 이러한 권한을 바꾸는 명령어를 살펴 보도록 하겠습니다.

 

명령어는 chmod 인데 사용 법은 예를 들면 <chomd 777 파일명> 입니다.

 

가운데 777은 변경이 가능 합니다.

 

이건 암기를 해야 되는데 r/w/x 권한을 각각 숫자로 표현하면 4/2/1 입니다.(단순 덧셈으로 각 부분의 권한을 주게 됩니다.)

 

7/7/7   =>  소유자권한/그룹권한/전체권한 <7이라는 숫자는 단순 덧셈 4 + 2 + 1 입니다.>

 

예를 들어서 chmod 777 goods 실행을 하면
 
goods 디렉토리의 권한이 drwxrwxrwx(777) 변경이 됩니다.

'OS > 리눅스 & 유닉스' 카테고리의 다른 글

유닉스 작업 시간 측정 (마이크로세컨드)  (0) 2011.11.21
[Unix] 시간측정  (0) 2011.11.18
waitpid  (0) 2011.11.08
wait(), waitpid()  (0) 2011.11.08
+ 프로세스 & 좀비프로세스 +  (0) 2011.11.08
:

waitpid

OS/리눅스 & 유닉스 2011. 11. 8. 16:08

1장. waitpid(2)

차례
1.1절. 사용법
1.2절. 설명
1.3절. 반환값
1.4절. 에러
1.5절. 예제

프로세스의 종료를 기다린다.


1.1절. 사용법

#include <sys/types.h>
#include <sys/wait.h>
 
pid_t waitpid(pid_t pid, int *status, int options);
		


1.2절. 설명

waitpid 함수는 인수로 주어진 pid 번호의 자식프로세스가 종료되거나, 시그널 함수를 호출하는 신호가 전달될때까지 waitpid 호출한 영역에서 일시 중지 된다.

만일 pid 로 지정된 자식이 waitpid 함수 호출전에 이미 종료되었다면, 함수는 즉시 리턴하고 자식프로세스는 "좀비프로세스"로 남는다.

pid 값은 다음중 하나가 된다.

< -1

프로세서 그룹 ID가 pid 의 절대값과 같은 자식 프로세스를 기다린다.

-1

임의의 자식프로세스를 기다린다. 이것은 wait(2) 와 동일하다.

0

프로세스 그룹 ID가 호출 프로세스의 ID와 같은 자식프로세스를 기다린다.

> 0

프로세스 ID가 pid 의 값과 같은 자식 프로세스를 기다린다.

options 의 값은 0이거나 다음값들과의 OR 이다.

WNOHANG

이것은 어떤 자식도 종료되지 않았더라도, 즉시 리턴하란 뜻이다.

WNOHANG

멈추거나 상태가 보고되지 않은 자식들을 위해 리턴

status 는 프로세스의 상태를 가져오기 위해서 사용한다. status 가 NULL 이 아닐경우 status 가 가리키는 위치에 프로세스의 상태정보를 저장한다. 다음의 메크로들을 통해서 상태정보를 알아가져올수 있다.

WIFEXITED(status)

자식이 정상적으로 종료되었다면 non-zero 이다.

WEXITSTATUS(status)

exit()를 호출하기 위한 인자나 return 값이 설정되고 종료된 자식의 반환 코드의 최하위 8비트를 평가한다. 이 매크로는 정상정료 - WIFEXITED(status) - 일때만 평가된다.

WIFSIGNALED(status)

자식프로세스가 어떤 신호때문에 종료되었다면 참을 반환한다.

WTERMSIG(status)

자식프로세스를 종료하도록한 신호의 번호를 반환한다. 당연히 WIFSIGNALED 가 non_zero 일 경우에만 사용할수 있다.

WIFSTOPPED(status)

반환의 원인이 된 자식프로세스가 현재 정지되어 있다면 참을 반환한다.

WSTOPSIG(status)

자식을 정지하도록 야기한 신호의 숫자를 반환한다. WIFSTOPPED가 non-zero 일경우에만 사용할수 있다.


1.3절. 반환값

종료된 자식 프로세스의 ID는 에러일때 -1반환 하고, 만일 WNOHANG 가 사용되고 어떤 자식도 이용할수 없다면 0을 반환한다.


1.4절. 에러

ECHILD

pid 로 지정된 프로세스가 존재하지 않거나, 호출한 프로세스의 자식이 아닐경우

EINVAL

options 인자가 유효하지 않을경우

ERESTARTSYS

WNOHANG 가 설정되어 있지 않고 신호가 봉쇄되지 않았거나 SIGCHLD가 잡혔을때

ENOBUFS

시스템에 연산을 위해서 이용할수 있는 자원이 부족할때


1.5절. 예제

#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <string.h>
 
int main()
{
    int pid;
    int status;
 
    pid = fork();
 
    if (pid < 0)
    {
        perror("fork error : ");
        exit(0);
    }
    if (pid == 0)
    {
        printf("Im Child\n");
        sleep(10);
        return 2;
    }
    else
    {
        printf("Parent: wait (%d)\n", pid);
        waitpid(pid, &status, 0);
        if (WIFEXITED(status))
        {
            printf("정상종료\n");
            printf("리턴값 %d\n", WEXITSTATUS(status));
        }
        else if (WIFSIGNALED(status))
        {
            printf("신호받았음\n");
            printf("신호번호 %d\n", WTERMSIG(status));
        }
    }
    exit(0);
}
		
위 프로그램을 자식이 정상종료할때까지 기다리거나, 신호를 줘서 자식을 강제 종료시킨후의 결과값을 테스트 해보기 바란다.

'OS > 리눅스 & 유닉스' 카테고리의 다른 글

[Unix] 시간측정  (0) 2011.11.18
유닉스 chmod 값  (0) 2011.11.14
wait(), waitpid()  (0) 2011.11.08
+ 프로세스 & 좀비프로세스 +  (0) 2011.11.08
shmget(), shmat(), shmdt() - 공유메모리 공간 할당/첨부/분리  (0) 2011.11.08
: