2012-11-12 194 views
2

我想解析DWARF信息,然後使用該信息從程序中使用引腳工具獲取局部變量。這類似於在類固醇上使用pin作爲GDB。但是,我有麻煩了解它們對局部變量和分配寄存器的意義。在DWARF信息中,DW_OP寄存器究竟意味着什麼?

例如,

<2>< 1214> DW_TAG_variable 
    DW_AT_name     mts 
    DW_AT_decl_line    69 
    DW_AT_type     <90> 
    DW_AT_location    DW_OP_breg4+44 

我的理解是,爲了從變量MTS獲得數據,我要補充44到某個寄存器,我的問題是,我不知道到底是哪他們註冊正在談論。我應該如何理解?我在網上找不到任何東西。

另一個例子是DW_OP_fbregDW_OP_breg5等等。

任何人都知道他們在討論x86上下文中的哪些寄存器?他們是在談論ebp還是esp?謝謝。

回答

4

這是一個符號註冊名稱。參見WineHQ的源的xxx_map_dwarf_register方法:

例如,DW_OP_breg4ESP在i386。

如果您還沒有這樣做,請參閱以下內容。

+0

是的,就是告訴你它存儲在ESP的地址加44 DWARF規範可以在http://www.dwarfstd.org/找到 - 這就是通常是最好的參考,儘管它不會像DWARF寄存器數字映射到i386寄存器名稱那樣具有體系結構/ ABI特定的信息。 –

相關問題