当一个已经被剥离的可执行文件在lldb中打开时,lldb不知道任何函数的名称并且必须在十六进制地址上手动设置断点,这很烦人。
但是,对于 Objective C 可执行文件,至少应该可以从目标文件中的 Objective C 运行时信息重构函数的地址: __DATA,__objc_classlist , __TEXT,__objc_methname 等等。
目前有没有办法在 lldb 中做到这一点?还是只是忽略了这些信息?
当一个已经被剥离的可执行文件在lldb中打开时,lldb不知道任何函数的名称并且必须在十六进制地址上手动设置断点,这很烦人。
但是,对于 Objective C 可执行文件,至少应该可以从目标文件中的 Objective C 运行时信息重构函数的地址: __DATA,__objc_classlist , __TEXT,__objc_methname 等等。
目前有没有办法在 lldb 中做到这一点?还是只是忽略了这些信息?
几年前我为 gdb 解决了这个问题,请参阅Stack Overflow 上的将类转储信息导入 GDB。
我不确定 lldb 是否有add-symbol-file等效的命令。从 lldb-dev 邮件列表中的内存位置加载符号表明您可能必须创建自己的 .dSYM 文件而不是 .stabs 文件。
因为Objc数据(选择器)必须对Objc代码可用才能运行。
LLDB 可以使用breakpoint set -n "[SomeClass someFunction:]"命令根据选择器设置断点。您还可以查看LLDB 教程。