用gdb 64bit超出范围检查内存

时间:2014-04-20 08:58:51

标签: c debugging memory gdb

使用

char *addr = getenv("CNFG") 

我得到了

0x7fffffffebea

然后调试我的程序我收到此错误消息:

(gdb) x/ls 0x7fffffffebea 
0x7fffffffebea:  <Address 0x7fffffffebea out of bounds>

如何检查该环境变量的内容(以便检查它是否具有有效值)?

1 个答案:

答案 0 :(得分:0)

  

我得到0x7fffffffebea

您的问题并不清楚,但在GDB之外运行程序时,您可能会获得该值。该值应该在运行之间发生变化(由于地址空间布局随机化),您应该在GDB中获得不同的值(由于在GDB下运行时堆栈布局的差异)。

换句话说,在GDB下运行程序,打印地址,然后使用x/s addr检查字符串。