c - gdbでのアセンブリコードのデバッグ|プラットフォームLinux

c debugging assembly gdb recommendation-engine

私はgdbでアセンブリコードをデバッグするのが初めてです。そのため、いくつか質問があります。


実際に実行せずに(仮想場所で)アセンブリコードを実行するにはどうすればよいですか?
値が必要な場合、値を挿入して、switchステートメントの各ケースでどのように機能するかを確認するにはどうすればよいですか?

例:アセンブリの例を示すことができなかったので、cでそれを示します。

    scanf ( "%d",&y);
    while ( y ) {
         ...
         scanf( "%d", &x);
         switch ( x ) {

         case 1: ...
         case 2: ...
         case 3: ...
         }

     }

必要な場合、どのような値がレジスターに格納されているかをどのようにして知ることができますか?
すべての表示を.txtファイルに出力するにはどうすればよいですか?つまり、プログラムを開始し、ブレークポイントなしで実行し、この画面を.txtファイルに出力するとします。だから、私は紙で作業できます。ご存知のように、紙はコンピュータよりも強力です:)


「gdbチュートリアルまたはマニュアルページを読んで」と言う方もいらっしゃると思いますが、コマンドのしくみを説明する例など、良いチュートリアルは見つかりませんでした。私の目は例を見て初めて脳が機能します:)

プラットフォームはLinuxです
ツールはターミナル/コンソールです

編集:もちろん、あなたが知っているなら、良いドキュメントを含む良いウェブサイトをください

「魚を捕まえる方法」、「魚を食べる方法ではない」のドキュメントをください
答え
実際に実行せずにアセンブリコードを実行するにはどうすればよいですか?

えっと、えっと、何?

値が必要な場合、値を挿入して、switchステートメントの各ケースでどのように機能するかを確認するにはどうすればよいですか?

set whatever = some expression

レジスタには$シギルがあることに注意してください(例:$eax)。

必要な場合、どのような値がレジスターに格納されているかをどのようにして知ることができますか?

すべてのレジスタについて:

info reg


特定のレジスター

info reg $eax


または

p $eax


または

p/x $eax


等...

すべての表示を.txtファイルに出力するにはどうすればよいですか?つまり、プログラムを開始し、ブレークポイントなしで実行し、この画面を.txtファイルに出力するとします。だから、私は紙に取り組むことができます。ご存知のように、紙はコンピュータよりも強力です:)

set logging file foobar.out
set logging on
関連記事

c - Linux用CのサンプルNPAPIプラグイン

c - Cでパイプを作成する[複製]

objective-c - 同じコンカレントキューからdispatch_sync内でdispatch_applyが呼び出されたときに内部で何が発生するか

c - C++ベクトルの最高のC実装は何ですか?

c - AIX 6.1:警告:重複したシンボル:

c - 定義されている場合(__AIX)はAIX 6.1で動作しませんか?

c - 「異なるサイズの整数からポインタへのキャスト」とはどういう意味ですか?

c - LIFOの順序ではなく、アドレスの順序でフリーリストを整理する利点は何ですか?

c++ - C++でのCライブラリ関数の実装

c - malloc実装での空きリストの維持