最明确地崩溃应用程序的方法?

时间:2010-09-02 10:19:33

标签: windows crash debugbreak

我的应用程序内置了自定义崩溃处理功能(请参阅John Robbins关于“调试Windows应用程序”的优秀书籍)。为了测试这个功能,我总是使用Windows函数DebugBreak(),这总是很完美。但是从Windows 7开始,调用此函数只是说“已达到断点”并在不调用崩溃处理程序的情况下停止应用程序。

我总是可以将此代码放在我的应用程序中以测试崩溃功能:

int *ptr = (int *)0xdeadbeef;
*ptr = 123456789;

甚至可以添加几种情况,以防0xdeadbeef是有效地址:

int *ptr = (int *)0xdeadbeef;
*ptr = 123456789;
ptr = (int *)0L;
*ptr = 123456789;
ptr = (int *)0xffffffff;
*ptr = 123456789;

但我想知道:是不是有更简洁的方法可以在Windows下崩溃您的应用程序?

2 个答案:

答案 0 :(得分:1)

只需创建一个指向对象的空指针,其中一些成员函数是try并调用其中一个?也许可以在一个函数中执行它,这样你就知道它是什么了

void CrashApp()
{
    MyObject * ptr = 0;
    ptr->Function();
}

绝对是最简单的方法,而且非常清楚最新情况

答案 1 :(得分:1)

您可以使用__debugbreak() intrinsic代替DebugBreak()函数。这没有说任何事情并且与EXCEPTION_BREAKPOINT

崩溃

RaiseException()是另一种崩溃方式。