当我执行此操作时......
void CcrashDlg::OnBnClickedBtnCrash()
{
char* ptr = NULL;
*ptr = 1;
}
app只记录"访问违规",什么也没发生。
如何崩溃我的MFC应用程序? (visual studio 2010)
答案 0 :(得分:2)
我认为答案隐藏在对问题的评论中,所以我将在这里总结一下 - 这是重要的事情。
完整的详细信息位于以下链接:The case of the disappearing OnLoad exception – user-mode callback exceptions in x64。
您希望崩溃程序的无效操作不会在所有情况下崩溃。这包括其他答案中概述的许多技术。
只有当您使用的是64位版本的Windows并且您位于Windows内核调用的函数中时,才会出现此问题。在32位版本的Windows中,可能会从调用内核的代码中捕获异常或无效操作,但在64位版本的Windows中,这是不可能的。 Windows本身将捕获用户/内核边界的错误,忽略它!这被认为是比每次崩溃程序更好的结果,因为在32位中运行良好的catch块不再有机会处理错误。
您仍然可以使用ExitProcess
或TerminateProcess
立即停止此过程,但我还没有尝试过。
答案 1 :(得分:1)
只需将数字除以零,
int div = 1;
div--;
int cr = (any number)/div;
答案 2 :(得分:0)
Assert( NULL )
将使您的应用程序在调试模式下崩溃。我认为您不想崩溃发布版本,但如果是这样,您可以使用Verify
/两者。
导致崩溃的其他简单方法就是使用sprintf
错误的格式化说明符,例如在期望“%d”时输入字符串。
答案 3 :(得分:0)
这是我用来崩溃我的应用程序。我认为它和你的一样。在发布模式下它也会崩溃。
*(int*)0 = 1;
答案 4 :(得分:0)
abort()适用于发布模式
在64位操作系统上编译win64平台时,应用程序崩溃。