我应该如何查看GDB中特定地址的堆栈数据?

问题描述:

简单的C源代码来执行的程序:我应该如何查看GDB中特定地址的堆栈数据?

int main (int argc , char **argv)                               
{                                        
     system ("XXXX");                               
     return 0;                                    
} 

现在用gdb编译和调试,我试图查看使用p命令什么的地址“XXX”的真正代表,但有一个空洞,很我做错了吗?

enter image description here

如果你想检查位于地址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十六进制格式显示,并有很多其他的变化。