0

私は爆弾を拡散する必要がある CS プロジェクトを持っています (聞いたことがあるなら Mr.Evil 爆弾) が、行にブレークポイントを設定したいときに gdb に問題があります。gdb でファイルを開いて ata ランダム行を分割しようとすると、次の問題が発生します。

 gdb bomb 
 (gdb) break 15
 No symbol table is loaded.  Use the "file" command.

さらに、「file」コマンドを使用しても、

 "/auto/bunter_usr/bomb": not in executable format: File format not recognized

この問題は、私の教授がファイルをコンパイルしたときに -g フラグを使用しなかったことが原因であることに気付きました。私の状況では、行にブレークポイントを設定する方法はありますか?

4

2 に答える 2

2

"/auto/bunter_usr/bomb": 実行可能形式ではありません: ファイル形式が認識されませんでし
た 問題は私の教授が -g フラグを使用していないためだと気付きました

あなたの認識は正しくありません。なしでコンパイルされた実行可能ファイルは、上記のメッセージを生成し-gません。

ほとんどの場合、GDB を指しているファイルは、実際の実行可能ファイルを呼び出すシェル スクリプトです (おそらく、いくつかの環境変数を設定した後、またはいくつかのコマンド ライン フラグを追加した後)。シェルスクリプトではなく、実際の実行可能ファイルをデバッグしたい。

于 2012-10-27T17:09:46.747 に答える
1

バイナリを逆アセンブルし、メモリの場所を確認して、それらの場所にブレークポイントを設定する必要があります。

やり方はこうだ: gdb> b *0x80456789

ここに参照用のチートシートがあります http://csapp.cs.cmu.edu/public/docs/gdbnotes-ia32.pdf

于 2012-10-27T16:21:05.553 に答える