lldb断点设置命令失败

问题描述:

我正在尝试使用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> 

,如果你没有看到这里的任何输出,则二进制得到剥离。你需要弄清楚谁在这样做,并让他们停止...