我想崩溃我的mfc应用程序

时间:2014-04-23 03:48:43

标签: visual-c++ mfc

当我执行此操作时......

void CcrashDlg::OnBnClickedBtnCrash()
{
    char* ptr = NULL;
    *ptr = 1;
}

app只记录"访问违规",什么也没发生。

如何崩溃我的MFC应用程序? (visual studio 2010)

5 个答案:

答案 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块不再有机会处理错误。

您仍然可以使用ExitProcessTerminateProcess立即停止此过程,但我还没有尝试过。

答案 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)

  1. abort()适用于发布模式

  2. 在64位操作系统上编译win64平台时,应用程序崩溃。