LLDB 断点集命令失败



我正在尝试使用lldb的编程断点设置。 该命令是:

(lldb) breakpoint set -r . -s <product-name>
Breakpoint 25: no locations (pending).
WARNING:  Unable to resolve breakpoint to any actual locations.

如您所见,它向我抛出一条警告,指出它无法解析断点的位置。 我正在使用调试方案运行我的项目,没有优化。

可能导致此警告的原因是什么?

如果<product-name>是共享库,则可能尚未加载。 用:

(lldb) image list <product-name>

来验证。 如果是这种情况,请不要担心,lldb 将在加载库时解析断点。

您可能也有与 lldb 不同的<product-name>拼写,例如 MyApp.app 的模块名称实际上是"MyApp"。 尝试在已知在<product-name>的名称上设置断点,然后执行break list,输出将具有:

1.1 where = ModuleName`symbol_name...

模块名称是要传递给 -s 的内容。

请注意,如果您知道的符号名称上的断点未解析到任何位置,则可能在调试之前剥离二进制文件。 您可以通过查找二进制文件(image list也会告诉您(来验证这一点,然后在终端中运行:

$ nm -ap <PathToBinary>

如果您在此处看不到任何输出,则二进制文件已被剥离。 你需要弄清楚是谁这样做并让他们停止......

呃,看起来像你搜索一个函数

.

我的猜测是找不到的。

在Macsbug的旧时代,点代表当前的PC,但这在lldb中不起作用。

最新更新