프로그램 사용/gdb & insight
gdb 명령어 - next / step / [엔터]
구차니
2009. 7. 1. 21:54
$ 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) 을 입력하면 된다.