$ more hello.c #include <unistd.h> int flag = 0; void aa() { sleep(1); } void bb() { sleep(1); } void tt() { if(flag^=1) aa(); else bb(); } void main() { int test; char str[] = "Hello World!"; for(test = 0; test < 100; test++) { printf("Hello World!\n"); tt(); } test = 1 + 1; } |
위의 소스를
$ gcc -g -o a.out hello.c |
그리고
$ gdb a.out |
아무튼~ step과 next 라는 명령어가 있는데
비슷하면서도 다른 역활을 한다.
29 tt();
(gdb) step
tt () at hello.c:17
17 if(flag^=1)
(gdb) l
12 sleep(1);
13 }
14
15 void tt()
16 {
17 if(flag^=1)
18 aa();
19 else bb();
20 }
21
(gdb) next
18 aa();
(gdb) next
20 }
(gdb)
일단 step은 말그대로 한단계 나아가고, 함수를 만나면 함수 안으로 들어간다. (비쥬얼 스튜디오의 F11)
그리고 next는 다음 줄로 나아가므로, 함수를 만나면 함수 다음줄로 넘어간다. (비쥬얼 스튜디오의 F10)
그리고 어셈블리 레벨에서 진행하려면 ni / si (instruction) 을 입력하면 된다.
'프로그램 사용 > gdb & insight' 카테고리의 다른 글
gdb cross compile 관련 (0) | 2010.05.18 |
---|---|
gdb 스크립트를 이용한 자동화 - automation using script on gdb (3) | 2009.09.01 |
gdb help (0) | 2009.06.26 |
간단한 gdb/gdbserver/insight 사용법 (0) | 2009.06.26 |
gdb/insight configure 도움말 (0) | 2009.06.26 |