使用 LLDB 加载 ctypes 的调试库

Debug library loaded with ctypes using LLDB

类似于this question, how do I use LLDB to debug a library that I'm loading with 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 是否加载了调试符号?

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

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

lldb 实际上会发出一个通知,说明这已发生在命令行上。

如果您愿意,您可以通过设置观看共享库加载:

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

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