GDB的if语句返回值是什么?

3

有没有办法读取正在评估的 if 语句?我的意思是,就像在 realpath 中获取返回值一样 -

if(realpath(path.c_str(), realPath) == 0)
3个回答

3
你可以进入并完成realpath函数。返回值将被打印在屏幕上。

0
如果你的代码中有一个内存指针,你可以使用GDB为其分配新的内存空间,并将其用于存储要评估的表达式的结果。
更多信息请查看此页面
(gdb) set variable p = malloc(sizeof(int))

(gdb) print p
$2 = (int *) 0x40013f98    (address allocated by malloc)

(gdb) set variable *p = 255

(gdb) print *p
$3 = 255

0

在 gdb 提示符下(如果您在编译时启用了调试符号)

print realpath(path.c_str(),realPath)

它将打印结果,非常巧妙。


但是要小心这个解决方案。该函数会重新评估,因此如果它具有任何副作用,这将破坏您的调试会话。更好的解决方案是进入函数,执行直到它返回并检查返回值。 - flolo
关于副作用的问题,它与您运行该行代码时一样。 - hhafez
“display”也可以完成这项工作。 - karlphillip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接