GDB 사용법 x 명령어

Posted 2012. 5. 22. 16:01

gdb 에서 소스코드를 볼수 있게 하려면 gcc 컴파일시 -g 옵션을 주면 된다.

gcc -g test.c

gdb -q a.out

list

차례로 해보면 소스코드를 보면서 디버깅을 할 수 있다.

gdb 는 x 명령어를 사용해 메모리를 조사할 수 있다.

옵션으로는
o : 8진법으로 보여줌
x : 16진법으로 보여줌
u : 10진법으로 보여줌
t : 2진법으로 보여줌

b : 1 byte 단위로 보여줌(byte)
h : 2 byte 단위로 보여줌(half word)
w: 4 byte 단위로 보여줌(word) 
g : 8 byte 단위로 보여줌(giant)

i : 역어셈블된 명령어의 명령 메모리를 볼수 있음
c : ASCII 표의 바이트를 자동으로 볼 수 있다.
s : 문자 데이터의 전체 문자열을 보여준다.

쓰는 예시는
x/o $esp
x/4wx 0xbffff2a0
x/hu $ebp
x/gt $eip

x/i $eip
x/3i $eip
x/3cb 0x8048484
x/s 0x8048484

이런식으로 쓰면 된다 그리고 옵션 앞에 또 숫자를 붙일수 있다.

x/4wx 0xbffff2a0 를 보자

맨 먼저 x 는 examine 의 약자로 메모리를 조사할때 쓴다.
그리고 / 뒤에 붙는 옵션을 보면
맨 뒤부터 보면 맨 뒤의 x는 16진수 이고 그다음 w 는 4바이트로 이위치에는 몇바이트 단위로 쓸것인지 써준다.
그리고 숫자는 몇개를 보여줄지 써주면 된다.

0xbffff2a0 부터 4바이트만큼씩 보여준다.

그리고 x/s 랑 x/c 는 0x80484d0 를 보면 6c6c6548 이렇게 있는걸 봐서 ascii 코드라는걸 짐작할 수 있다.
이건 몇번 해보다 보면 보일 것이다.
쨋든 그래서 x/s 를 해보면 문자열이 나온다.
그리고 6바이트만큼 c 옵션으로 출력한 결과도 볼만 하다.

'기타 > GDB' 카테고리의 다른 글

intel 문법 gdb, objdump  (0) 2012.05.22