在我的程序中,我在运行时使用 LoadLibrary 加载了一个 dll。在发布模式下运行时,一切正常。
但是当我尝试在调试模式下运行程序时,加载库以 SIGILL 停止,调试器显示它在 sti 指令上停止。
我还尝试通过从 dll 直接调用在程序加载期间链接 dll。但是我在程序加载期间得到了 SIGILL 。
我正在使用带有 qt5 的 mingw48。我对调试那个 dll 不感兴趣,只是为了调试另一个自己编写的代码部分。
到目前为止,我发现 sti/cli 指令仅在特权代码中。据我了解,在 gdb 中运行的代码没有特权。
我已经尝试过忽略信号::signal(SIGILL, SIG_IGN);
Gdb 命令handle SIGILL pass nostop noprint
在这里有帮助,但我想知道我的程序 SIGILLs 是否在其他地方
我真正需要的是在调试其余程序时以某种非调试模式加载该库。