我试图在计算Brainfsck中的Mandelbrot集的MIPS32r6程序中设置断点。该程序本身是用C++编写的,使用Clang编译,而我正在使用LLDB进行调试。
我遇到的问题是,在LLDB中时,我可以设置某些断点,主要是在较低的行号上,没有问题。但是,在Main.cpp中的第70行之后,断点显示为“未解析”(即使执行断点列表显示它们具有完全合理的地址)。也就是说,我尝试在70号线之后设置的所有断点都没有解决,而70号线之前的所有合理断点都可以解决而没有问题。
我已经在此处链接了二进制文件的副本:http://filebin.ca/2tJzo2LLBJWO/MipsTest.bin
还有Main.cpp的副本:https://paste.ee/p/WYs8Y
我正在使用以下选项进行构建:
clang -mcompact-branches=always -fasynchronous-unwind-tables -funwind-tables -fexceptions -fcxx-exceptions -mips32r6 -O0 -g -glldb ...
lld --discard-none -znorelro --eh-frame-hdr ...
在这一点上,我不确定是什么导致了此问题。
最佳答案
我会尝试在lldb中执行target modules dump line-table Main.cpp
来查看lldb认为线表是什么样的。然后使用readelf --debug-dump=decodedline MipsTest.bin
之类的东西查看二进制文件的DWARF线表(我认为这是正确的-我正在查看Web上的readelf主页)。