我正在尝试使用lldb
的程序断点设置。命令是:
(lldb) breakpoint set -r . -s <product-name>
Breakpoint 25: no locations (pending).
WARNING: Unable to resolve breakpoint to any actual locations.
正如您所看到的,它向我发出警告,说它无法解析断点的位置。我正在使用调试方案运行我的项目而没有优化。
可能导致此警告的原因是什么?
答案 0 :(得分:0)
如果<product-name>
是共享库,则可能尚未加载。使用:
(lldb) image list <product-name>
验证。如果是这种情况,请不要担心,lldb会在加载库时解析断点。
您可能也有不同于<product-name>
的拼写而不是lldb,例如MyApp.app的模块名称实际上是&#34; MyApp&#34;。尝试在您知道的名称<product-name>
上设置断点,然后执行break list
,输出将包含:
1.1 where = ModuleName`symbol_name...
ModuleName是您要传递给-s的内容。
注意,如果您知道的符号名称上的断点没有解析到任何位置,那么您可能在调试之前剥离二进制文件。您可以通过查找二进制文件来验证这一点(image list
也会告诉您),并在终端中运行:
$ nm -ap <PathToBinary>
如果你在这里看不到任何输出,那么二进制文件就会被剥离。你需要找出谁在做这件事并让他们停下来......
答案 1 :(得分:0)
嗯,就像您在搜索函数
。
找不到是我的猜测。
在古老的Macsbug时代,点代表当前的PC,但在lldb中不起作用。