2017-09-02 234 views
0

有没有办法将step转换成printf()或atof()等标准函数,然后执行finish返回主程序以获取返回值?LLDB“进入”和“完成”以获得标准函数的返回值

随着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它的步骤“过度”的所有标准功能。它适用于程序内部的功能,我可以介入这些功能,但不适用于标准功能。我想这是一个功能,但有没有办法解决它?我也用LLDB使用step

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

回答

0

和gdb一样,lldb会进入你有调试信息的任何函数。它将跳过没有调试信息的任何函数。你所描述的行为差异听起来更像lldb没有/没有找到你的标准库solibs的调试信息。

+0

谢谢,我试着GDB和LLDB在同一台机器上,然后我得到了一致的行为。我知道在不同的机器上运行时,我在LLDB和GDB之间只有不同的行为。所以你是正确的,差别可能是我运行LLDB的机器上缺少调试信息。 – jackbenny

相关问题