1
我試圖使用libdwarf來計算正在運行的程序中局部變量的位置。我曾經可以通過執行DW_OP_fbreg來完成這項工作,DW_OP_fbreg最終會映射到一個寄存器,該寄存器可能是該函數的基本框架。在較新的矮人標準中,框架基礎是DW_OP_call_frame_cfa。我似乎無法找到任何信息告訴我如何執行DW_OP_call_frame_cfa並返回一個幀基地址。有很多CFA表的參考資料,誰恢復了哪些註冊表,但我不知道如何獲取這些信息以及如何應用它。有人可以填補空白嗎?我該怎麼處理DW_OP_call_frame_cfa
好的,這是有道理的原則。你能告訴我什麼函數獲得指令列表嗎?我們有dwarf_loclist_n()等位置表達式,但我似乎無法找到CFA的等價物。它是否使用相同的DW_OP *操作常量? –
恐怕我不知道libdwarf API,所以我不能在那裏提出任何建議。無論如何,不,它不使用DW_OP_ *操作,除非CFA引用DWARF表達式(在某些情況下可以)。 –
@TomTromey什麼是「在表達式棧上推它」的含義? – stackoverflowwww