最近、MI ライブラリをダウンロードし、いくつかのサンプル コードを実行/読み取りました。私が見たすべての例では、実装は以下のような別のプログラムを介していました。
Main Program
Interact with GDB
exec another program
Gather Debug info of the another program
私の質問は、現在のスレッド/プログラム自体で GDB を呼び出す/実装する方法、つまりこの自己実行プロセスをアタッチする方法です。
現在のスレッド/プログラム自体で GDB MI を呼び出し/実装するにはどうすればよいですか。つまり、この自己実行/実行中のプロセスを GDB にアタッチし、段階的に実行するように指示します。
できません。
考えてみてください: アタッチ後に GDB が最初に行うことは、プログラムを停止し、次に何をすべきかの指示を待つことです。その時点で、プログラムは GDB にcontinue
コマンドを送信する必要がありますが、停止しているため送信できません。
ここで、プログラムがマルチスレッド化されていて、 GDB にノンストップ モードで実行するように要求し、GDBの対話自体を実行するスレッドが決して停止しないように慎重に調整すると、おそらくこれでうまくいく可能性があります。ただし、確実に機能するかどうかは疑問です。