ETC/Linux

gdb 기초 사용법2(stepi nexti 차이점)

쪽제비 2015. 9. 16. 17:34

nexti 와 stepi 차이를 예문을 통해 알아보도록 하겠다

우선 call 을 하는 부분이 있어야 하므로 함수를 하나 정의 하고

그 부분에서 어떻게 디버깅이 진행되는지 살펴보자


이제 컴파일 후 gdb로 실행을 해보도록 하겠다

intel 로 어셈블리어를 바꾸고

main함수쪽을 확인해 보았다.

function으로 call 하는 부분이 보인다.

main+40 (0x08048403) 이부분이다

여기를 브레이크 포인트로 잡고 런을 한 후 nexti와 step의 차이를 보도록 하자

call 하는 부분에 멈췄다.

nexti 를 먼저 확인해 보자

nexti를 하자 call을 따라 가는 것이 아니라 다음 명령으로 넘어간 것을 볼 수 있다

nexti명령 하나로 call을 실행시키고 넘어간 것이다.

그럼 stepi를 확인해 보자


stepi 는 call 한 명령어를 따라가서 수행하는 것을 볼 수 있다.

이러한 차이점을 가지고잇다... 오호...


printf한 부분이 어떻게 나오는지도 한번 확인해 보자

printf 실행 부분에 breakpoint를 설정한 후

c명령어(continue)를 사용하여 진행한다

ni명령어를 쓰면 printf가 실행되고 30이 출력되는것을 볼 수 있다.

si명령어였다면 어떻게 될지 상상이 된다면 두 명령어의 차이점을 이해한 것이다.




'ETC > Linux' 카테고리의 다른 글

make 유틸리티  (0) 2016.09.30
vi 에디터  (0) 2016.09.30
gdb 기초 사용법 (메모리, 레지스터 내용 읽기)  (0) 2015.09.16
gdb 기초 사용법  (0) 2015.09.15
gcc 컴파일  (0) 2015.09.15