有没有一种方法可以将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/