1

私は C プログラミングの初心者で、組織のニーズに合わせて C で書かれたオープンソース ツールをカスタマイズしようと懸命に努力してきました。

IDE:Eclipse、デバッガ:GDB、OS:RHEL

このツールは本質的にマルチプロセスであり (メイン プロセスが最初に実行され、 fork() を使用して複数の子プロセスが生成されます)、実行時に値を共有します。Eclipse で (GDB を使用して) デバッグしているときに、デバッグ中のプロセスは、他のプロセスがサスペンド モードになっているときにのみ実行されていることがわかりました。したがって、他のプロセスが中断されているため、実行中の唯一のプロセスは意図したジョブを実行できません。

GDBでMIコマンドを「ノンストップを設定」として使用すると、他のプロセスが実行される可能性があることをどこかで見ました。以下に示す gdbinit ファイルで同じコマンドを使用しました。

デバッグ構成

注: 上記の .gdbinit ファイルを別の gdbinit でオーバーライドしました。これは、メイン プロセスの実行後にデバッガーが終了するため、.gdbinit では子プロセスをデバッグできないためです。

残念ながら、このコマンドを使用した後、デバッガーは応答を停止します。

gdbinit ファイルで使用している以下のコマンドを参照してください。

gdbinit ファイルの内容

ノンストップでコメントすると、Eclipse は現在のプロセスの通常のデバッグを続行できます。

追加: 下の画像では、他のプロセスが中断されている間に 1 つのプロセスのみが実行されていることがわかります。

ここに画像の説明を入力

私の要件に従ってGDBを構成するのを手伝ってくれる人はいますか?

前もって感謝します。

4

1 に答える 1