繁体   English   中英

评估 gdb 中的变量/函数

[英]evaluate variable/function in gdb

我有以下代码,

...
char* seg = mmap(0, ...)
printf("seg=%x\n", seg);
...

该程序使用seg=b7ffd000打印。 在 gdb 中(对于相同的执行),当使用p/x seg时,它会打印$2 = 0x0 我在这里很困惑。 不是同一个 var seg吗? 为什么价值观不同。

PS:在mmap中,第一个参数是映射的 memory 的优选地址,返回值是映射的 memory 的实际地址。

既然你已经在评论中回答了我的问题,我可以回答了!

您看到的作为printf结果的值是真实地址。 您在调试器中看到0作为seg的值,因为启用优化后,编译器可以自由地执行各种奇怪的事情(这通常会使逐步调试变得棘手)。 不过,“可观察”的行为应该始终是正确的(假设您不依赖任何未定义的行为)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM