デバッガーでプログラムを実行している場合にのみ停止するassertスタイルのマクロを作成したいと思います。AFAIK、私のボックスで利用できる唯一のデバッガーはgdbなので、それについて説明します。
SIGTRAPシグナルのドキュメントには、デバッガーを一時停止することを目的としていることが示されているので、
if (!assertion) raise(SIGTRAP);
私のコードで。これは適切なポイントでGDBを中断するように機能しますが、コマンドラインからこれを実行するだけでもプログラムが停止します。bashとzshの両方が「トレース/ブレークポイントトラップ」信号を解釈して、プログラムが完全に停止する必要があるためです。
GDBが使用しているが、他のすべてが無視すると予想できるシグナルはありますか?または、デバッガー以外の操作を中断せずにGDBでの実行を一時停止するシグナル以外の方法はありますか?