C でシェルを作成しました。シェルでいくつかのプログラムを実行しているときに問題が発生しました。gdb でシェルをデバッグしているときに、シェルでプログラムを実行するにはどうすればよいですか?
2 に答える
別のコンソールから既に実行中のシェル プロセスに gdb でアタッチできます。このようにして、シェル出力は gdb 出力に干渉せず、通常どおりシェルでプログラムを実行できます。
- 最初のコンソール ウィンドウでシェルの実装を実行します。
- 2 番目のコンソールを開き、
ps
コマンドを使用して既に実行中のシェルの pid 番号を見つけます。 gdb
2 番目のコンソールで開始し、次のように pid 番号を使用してシェルに接続します。:~$ gdb -q
(gdb) attach 3479
プロセスにアタッチ中 3479これで、ブレークポイントを設定してシェルの実行を続行できます。
(gdb) b SomeFunction
(gdb) c
続き。
この時点から、2 つのコンソールがあります。
- シェルが実行されている場所
- シェルに取り付けられた2番目の
gdb
ラン
通常どおりシェルを使用できます。シェルで他のプログラムを実行したり、他のことをしたりできます。同時に、内部の 2 番目のコンソールでシェルの実行を観察できますgdb
。ポイントは、これら 2 つのプロセスの出力が互いに分離されていることです。これは、シェルを 1 つのコンソールだけで gdb 内で直接実行する場合には不可能です。
で使用するために、最初-g
にデバッグ フラグを使用してコンパイルするオプションを使用しgdb
ます。
次に実行します。
gdb shellapp
...
run someapps
...
6つの簡単なステップとGDBチュートリアルでgdbを使用してCプログラムをデバッグする方法を簡単に読むには
それとも、バックグラウンドでプログラムを実行するということですか?