有没有一种方法可以将step转换为诸如printf()或atof()的标准函数,然后执行finish返回主程序以获取返回值?

使用GDB,我可以这样做:

(gdb) step
14          float di = atof(argv[1]);
(gdb) step
atof (nptr=0x7fffffffe0c6 "5.8") at atof.c:27
27      atof.c: No such file or directory.
(gdb) finish
Run till exit from #0  atof (nptr=0x7fffffffe0c6 "5.8") at
atof.c:27
0x00005555555547d1 in main (argc=2, argv=0x7fffffffdd18) at
circumf.c:14
14          float di = atof(argv[1]);
Value returned is $1 = 5.7999999999999998


但是,当我使用LLDB尝试此操作时,它将逐步“覆盖”所有标准功能。它与程序中的功能(我可以进入的功能)一起使用,但不适用于标准功能。我猜这是一个功能,但是有没有解决的办法?我也将step与LLDB一起使用。

是否有其他方法可以从LLDB内部的标准函数获取返回值?

最佳答案

像gdb一样,lldb将进入您具有调试信息的任何功能。它将跳过任何没有调试信息的功能。您描述的行为上的差异听起来更像是lldb,没有/没有找到标准库solib的调试信息。

关于c - LLDB“介入”并“完成”以获得标准函数的返回值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46009485/

10-11 07:29