谁能告诉我下一个函数的代码,它会引发 EXCEPTION_FLT_STACK_CHECK 或 EXCEPTION_BREAKPOINT,因为我可以在主函数中捕获它们:
int _tmain(int argc, _TCHAR* argv[])
{
__try
{
FaultingStack(); // What I need to write in this function???
}
__except(GetExceptionCode() == EXCEPTION_FLT_STACK_CHECK ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
{
return FALSE;
}
return TRUE;
return 0;
}
不要建议 RaiseException func,我需要一个错误代码示例,而不是软件引发的异常
UPD:我还需要一个代码片段来处理下一个异常 EXCEPTION_INT_OVERFLOW
最佳答案
很容易引发断点异常。您可以使用以下其中一项(都是一样的):
DebugBreak(); // API function
__debugbreak(); // MSVC intrinsic
__asm int 3; // Actual instruction
现在,EXCEPTION_FLT_STACK_CHECK
与无效的浮点寄存器堆栈状态有关。
第一个应该启用与 FP 堆栈相关的 FP 异常:
#include <float.h>
_clearfp();
_controlfp(_controlfp(0, 0) & ~(EM_INVALID), MCW_EM);
接下来,使 FP 栈上溢/下溢:
for (float f; ; )
__asm fstp f;
关于c++ - 模拟硬件异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3900629/