代码之家  ›  专栏  ›  技术社区  ›  jackbenny

LLDB“step-in”和“finish”获取标准函数的返回值

  •  0
  • jackbenny  · 技术社区  · 8 年前

    有没有办法 step 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尝试这一点时,它超越了所有标准函数。它适用于程序内部的函数,我可以进入这些函数,但不适用于标准函数。我想这是一个功能,但有办法吗?我使用 还有LLDB。

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

    1 回复  |  直到 8 年前
        1
  •  0
  •   Jason Molenda    8 年前

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