【问题标题】:lldb breakpoint set command failslldb 断点设置命令失败
【发布时间】:2018-01-09 21:51:39
【问题描述】:
我正在尝试使用lldb 的编程断点设置。命令是:
(lldb) breakpoint set -r . -s <product-name>
Breakpoint 25: no locations (pending).
WARNING: Unable to resolve breakpoint to any actual locations.
如您所见,它向我发出警告说它无法解析断点的位置。我正在使用调试方案运行我的项目并且没有优化。
什么可能导致此警告?
【问题讨论】:
标签:
xcode
xcode8
breakpoints
lldb
【解决方案1】:
如果<product-name> 是共享库,它可能尚未加载。使用:
(lldb) image list <product-name>
进行验证。如果是这种情况,请不要担心,lldb 会在库加载时解析断点。
<product-name> 的拼写可能与 lldb 不同,例如 MyApp.app 的模块名称实际上是“MyApp”。尝试在您知道位于 <product-name> 中的名称上设置断点,然后执行 break list 并且输出将具有:
1.1 where = ModuleName`symbol_name...
ModuleName 是您要传递给 -s 的内容。
请注意,如果您知道存在的符号名称上的断点无法解析到任何位置,那么您可能会在调试之前剥离二进制文件。您可以通过查找二进制文件来验证这一点(image list 也会告诉您这一点)并在终端中运行:
$ nm -ap <PathToBinary>
如果您在此处看不到任何输出,则说明二进制文件已被剥离。你需要弄清楚是谁在这样做并让他们停止......
【解决方案2】:
呃,看起来你在搜索一个函数
.
我猜是找不到的。
在过去的 Macsbug 时代,点代表当前 PC,但在 lldb 中不起作用。