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