5

意味のあるすべての関数にブレークポイントを設定しようとしましたが、プログラムはそれらのいずれかに到達する前に終了します。何が起こっているのかを確認できるように、プログラムを最初からステップバイステップ モードで実行する方法はありますか?

重要な場合は /usr/bin/id をデバッグしようとしています(カスタムプラグインがあり、動作が正しくありません)

ここでPS Startコマンドが機能しません(コメントである必要がありますが、十分な担当者がいません)

4

3 に答える 3

6

プログラムのエントリ ポイント アドレスを取得し、そのアドレスにブレークポイントを挿入します。

これを行う 1 つの方法は、「エントリ ポイント: 0x4045a4」などの情報ファイルを作成することです。次に、「break *0x4045a4」を実行します。プログラムを実行すると、すぐに停止します。

ここからは、単一のステップ命令 (step や stepi など) を使用して続行できます。

デバッグしようとしているシステムを教えていません。コードが読み取り専用メモリにある場合、そのシステムでサポートされている場合は、ハードウェア ブレークポイント (hbreak) を使用する必要がある場合があります。

于 2013-09-09T09:17:26.890 に答える
5

開始コマンドを使用する

'start' コマンドは、メイン プロシージャの先頭に一時的なブレークポイントを設定してから 'run' コマンドを呼び出すのと同じことを行います。

例えば

デバッグ情報mainを含むプログラム、および次のような使用法: main arg1 arg2

gdb main
(gdb) start arg1 arg2
于 2013-09-10T07:50:38.087 に答える