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 |