저는 GDB를 처음 사용하므로 몇 가지 질문이 있습니다.
스택의 내용을 어떻게 볼 수 있습니까? 예 : 레지스터의 내용을 보려면를 입력
info registers
합니다. 스택의 경우 무엇이어야합니까?의 내용을
$0x4(%esp)
어떻게 볼 수 있습니까? 를 입력print /d $0x4(%esp)
하면 GDB에서 오류가 발생합니다.
플랫폼 : Linux 및 GDB
답변:
사용하다:
bt
-역 추적 : 스택 함수 및 인수 표시info frame
-스택 시작 / 종료 / 인수 / 지역 포인터 표시 x/100x $sp
-스택 메모리 표시(gdb) bt
#0 zzz () at zzz.c:96
#1 0xf7d39cba in yyy (arg=arg@entry=0x0) at yyy.c:542
#2 0xf7d3a4f6 in yyyinit () at yyy.c:590
#3 0x0804ac0c in gnninit () at gnn.c:374
#4 main (argc=1, argv=0xffffd5e4) at gnn.c:389
(gdb) info frame
Stack level 0, frame at 0xffeac770:
eip = 0x8049047 in main (goo.c:291); saved eip 0xf7f1fea1
source language c.
Arglist at 0xffeac768, args: argc=1, argv=0xffffd5e4
Locals at 0xffeac768, Previous frame's sp is 0xffeac770
Saved registers:
ebx at 0xffeac75c, ebp at 0xffeac768, esi at 0xffeac760, edi at 0xffeac764, eip at 0xffeac76c
(gdb) x/10x $sp
0xffeac63c: 0xf7d39cba 0xf7d3c0d8 0xf7d3c21b 0x00000001
0xffeac64c: 0xf78d133f 0xffeac6f4 0xf7a14450 0xffeac678
0xffeac65c: 0x00000000 0xf7d3790e