私のプログラムでは、実行時に LoadLibrary を使用して dll をロードします。リリースモードで実行すると、すべてが正常に機能します。
しかし、プログラムをデバッグ モードで実行しようとすると、ロード ライブラリが SIGILL で停止し、デバッガは sti 命令で停止したことを示します。
また、dll からの直接呼び出しによって、プログラムのロード中に dll をリンクしようとしました。しかし、プログラムのロード中に SIGILL が発生します。
qt5で出荷されたmingw48を使用しています。私はそのdllのデバッグには興味がなく、コードの他の自己記述部分をデバッグするだけです。
私がこれまでに見つけたように、sti/cli 命令は特権コードのみです。私が理解しているように、gdb で実行されているコードには特権がありません。
私はすでに信号を無視しようとしました::signal(SIGILL, SIG_IGN);
ここではGdb コマンドhandle SIGILL pass nostop noprint
が役立ちますが、プログラムが他の場所で SIGILL するかどうかを知りたいです
私が本当に必要としているのは、プログラムの残りの部分がデバッグされている間に、そのライブラリを非デバッグ モードでロードすることです。