簡體   English   中英

使用lldb進行調試時,無法將較高的行號解析為斷點

[英]Higher line numbers are unresolved as breakpoints when debugging using lldb

我試圖在計算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 ...

在這一點上,我不確定是什么導致了此問題。

我會嘗試將target modules dump line-table Main.cpp到lldb中的target modules dump line-table Main.cpp中,以查看lldb認為該行表是什么樣子。 然后使用諸如readelf --debug-dump=decodedline MipsTest.bin類的東西查看二進制文件的DWARF線表(我認為是對的-我正在查看Web上的readelf主頁)。

使用示例二進制文件,我得到:

(lldb) b s -l 72
Breakpoint 1: where = MipsTest.bin`main + 544 at Main.cpp:72, address = 0x000134a0

因此,我們找到了該斷點的地址。 如果在運行時無法解決該問題,則意味着我們無法在該地址處實現斷點(例如,由於某種原因無法將陷阱寫入那里的程序存儲器中。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM