dwarf2でスタックを巻き戻すことで、いくつかの非常に基本的なABI(アプリケーションバイナリインターフェイス)シナリオで引数の信頼性の高い回復がどのように保証されるかを理解していません。ABIについて考えてみましょう。これは、最初の3つの引数がレジスターにあり、スタックにある必要があることを示しています。私が理解しているように、dwarf2スタックの巻き戻しメカニズムにより、CFIテーブルが適切に満たされている場合、現在のフレームの呼び出しポイントでレジスタの値を取得できます。ただし、これでは、呼び出し元のプロローグに移動して、引数レジスタの内容を知ることはできません。したがって、同じフレーム内の異なるポイントでもレジスタの値を見つける方法があったはずです(.debug_frameセクションでエンコードされたテーブルは、前のフレームの場所のみを示しています)。
私の理解に何か問題がありますか?このような場合、dwarf2デバッグ形式に基づくデバッガーはどのように機能しますか?引数がスタックで渡されるアーキテクチャの場合、プログラム内のすべてのポイント(任意のフレーム)で値を回復するための問題はありません。