有没有办法将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时,它会步骤" over"所有标准功能。它适用于程序内部的功能,我可以介入的功能,但不适用于标准功能。我想这是一个功能,但它有办法吗?我也将step
与LLDB一起使用。
是否有其他方法可以从LLDB中的标准函数中获取返回值?
答案 0 :(得分:0)
与gdb一样,lldb会进入任何有调试信息的函数。它将跳过任何没有调试信息的函数。您描述的行为差异听起来更像lldb,并没有找到标准库独立的调试信息。