日期:2014-05-16 浏览次数:20452 次
两个命令都是搜索函数的。
gdb的info functions是在内存中的symbol table查找,结果中的地址是内存里的地址,所以得到结果后,直接b(break,添加断点)这个地址,即可正确加断点。
lldb的image lookup -s是在库文件中查找,结果中的地址是在library中的偏移地址,b这个地址是不能正确break的。
正因为这个区别,gdb会比lldb更快得到结果。
(info functions后面接的是正则表达式, image lookup -s -r要再加上-r才是搜正则表示式, regular expression。)
如果不是为了加断点(当然,还是可以b整个函数签名),那么用lldb更好,因为:
1. 如果使用IDA去分析库文件,那么可以把lldb的结果地址用在IDA中jump to address。
2. 如果是为了确定库文件中是否有某函数,lldb更准确,因为不一定所有库的内容都加载进内存了。