3

情報を解析し、DWARFその情報を使用して、ピン ツールを使用してプログラムからローカル変数を取得しようとしています。ステロイドのように使用するようなものpinです。GDBただし、ローカル変数と割り当てられたレジスタ用に持っているレジスタが何を意味するのかを理解するのに苦労しています。

例えば、

<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_fbregですDW_OP_breg5

x86コンテキストでどのレジスタについて話しているか知っている人はいますか? 彼らはebpまたはespについて話しているのですか?ありがとう。

4

1 に答える 1

7

これはシンボリックレジスタ名です。以下については、 WineHQのソースのxxx_map_dwarf_registerメソッドを参照してください。

たとえば、i386にDW_OP_breg4あります。ESP

まだ行っていない場合は、以下も参照してください。

于 2012-11-12T19:08:41.100 に答える