0

C でシェルを作成しました。シェルでいくつかのプログラムを実行しているときに問題が発生しました。gdb でシェルをデバッグしているときに、シェルでプログラムを実行するにはどうすればよいですか?

4

2 に答える 2

1

別のコンソールから既に実行中のシェル プロセスに gdb でアタッチできます。このようにして、シェル出力は gdb 出力に干渉せず、通常どおりシェルでプログラムを実行できます。

  1. 最初のコンソール ウィンドウでシェルの実装を実行します。
  2. 2 番目のコンソールを開き、psコマンドを使用して既に実行中のシェルの pid 番号を見つけます。
  3. gdb2 番目のコンソールで開始し、次のように pid 番号を使用してシェルに接続します。

    :~$ gdb -q
    (gdb) attach 3479
    プロセスにアタッチ中 3479

  4. これで、ブレークポイントを設定してシェルの実行を続行できます。

    (gdb) b SomeFunction
    (gdb) c
    続き。

この時点から、2 つのコンソールがあります。

  • シェルが実行されている場所
  • シェルに取り付けられた2番目のgdbラン

通常どおりシェルを使用できます。シェルで他のプログラムを実行したり、他のことをしたりできます。同時に、内部の 2 番目のコンソールでシェルの実行を観察できますgdb。ポイントは、これら 2 つのプロセスの出力が互いに分離されていることです。これは、シェルを 1 つのコンソールだけで gdb 内で直接実行する場合には不可能です。

于 2013-10-26T07:42:01.003 に答える
1

で使用するために、最初-gにデバッグ フラグを使用してコンパイルするオプションを使用しgdbます。

次に実行します。

gdb shellapp
...
run someapps
...

6つの簡単なステップとGDBチュートリアルでgdbを使用してCプログラムをデバッグする方法を簡単に読むには

それとも、バックグラウンドでプログラムを実行するということですか?

于 2013-10-26T07:40:39.137 に答える