我应该如何查看GDB中特定地址的堆栈数据?
问题描述:
简单的C源代码来执行的程序:我应该如何查看GDB中特定地址的堆栈数据?
int main (int argc , char **argv)
{
system ("XXXX");
return 0;
}
现在用gdb编译和调试,我试图查看使用p
命令什么的地址“XXX”的真正代表,但有一个空洞,很我做错了吗?
答
如果你想检查位于地址0x40063c
一个字符串,用GDB examine
命令:
(gdb) x/s 0x40063c
注意,这个数据是在堆栈上不。你可以找出的数据与info symbol
命令:
(gdb) info sym 0x40063c
(这应该打印出类似这样symbol LC1 in .rodata of a.out
)
答
你不应该使用$字符 - 这是汇编语法的一部分,但不是GDB的语法。
而“X”命令更容易使用,如果你只是想看到的内存:
(gdb) p/s 0x40063c
您还可以使用P/X十六进制格式显示,并有很多其他的变化。