【问题标题】:Debug library loaded with ctypes using LLDB使用 LLDB 加载 ctypes 的调试库
【发布时间】:2017-04-13 08:28:47
【问题描述】:

类似于this question,如何使用 LLDB 调试我正在使用ctypes 加载的库?

我可以用

在调试器中启动它
$ lldb -- python myscript.py

但是我想在 C 库中的特定函数上设置断点。编写以下失败:

(lldb) breakpoint set -f fft.c -l 78
Breakpoint 1: no locations (pending).
WARNING:  Unable to resolve breakpoint to any actual locations.    

运行 image list 不会显示我的库。如何告诉 LLDB 加载库?

另外,一旦加载,我如何验证 LLDB 加载了调试符号?

【问题讨论】:

    标签: python debugging ctypes lldb


    【解决方案1】:

    大概您的程序还没有运行到加载包含 fft.c 代码的库的程度?

    这对 lldb 来说应该不是问题。每次加载新的共享库时,lldb 都会检查所有现存的断点以查看它们是否在新的共享库中找到任何匹配项。所以你应该能够设置断点,然后运行,当库被加载时,一个新的位置将被添加。如果这不是真的,那么请向http://bugreporter.apple.com 提交错误。

    lldb 实际上会在命令行中发出通知。

    如果您愿意,可以通过以下设置查看共享库的加载情况:

    (lldb) settings set target.process.stop-on-sharedlibrary-events true
    

    但这并不是让 lldb 扫描所有新加载的库以查找断点匹配的必要条件。

    【讨论】:

    • 正确,该库尚未运行以加载该库。这解释了上述消息中的(pending)。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 2016-01-02
    • 2015-09-20
    • 2014-10-19
    • 1970-01-01
    相关资源
    最近更新 更多