私は C プログラミングの初心者で、組織のニーズに合わせて C で書かれたオープンソース ツールをカスタマイズしようと懸命に努力してきました。
IDE:Eclipse、デバッガ:GDB、OS:RHEL
このツールは本質的にマルチプロセスであり (メイン プロセスが最初に実行され、 fork() を使用して複数の子プロセスが生成されます)、実行時に値を共有します。Eclipse で (GDB を使用して) デバッグしているときに、デバッグ中のプロセスは、他のプロセスがサスペンド モードになっているときにのみ実行されていることがわかりました。したがって、他のプロセスが中断されているため、実行中の唯一のプロセスは意図したジョブを実行できません。
GDBでMIコマンドを「ノンストップを設定」として使用すると、他のプロセスが実行される可能性があることをどこかで見ました。以下に示す gdbinit ファイルで同じコマンドを使用しました。
注: 上記の .gdbinit ファイルを別の gdbinit でオーバーライドしました。これは、メイン プロセスの実行後にデバッガーが終了するため、.gdbinit では子プロセスをデバッグできないためです。
残念ながら、このコマンドを使用した後、デバッガーは応答を停止します。
gdbinit ファイルで使用している以下のコマンドを参照してください。
ノンストップでコメントすると、Eclipse は現在のプロセスの通常のデバッグを続行できます。
追加: 下の画像では、他のプロセスが中断されている間に 1 つのプロセスのみが実行されていることがわかります。
私の要件に従ってGDBを構成するのを手伝ってくれる人はいますか?
前もって感謝します。