1

我的应用程序内置了自定义崩溃处理(请参阅 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 下崩溃吗?

4

2 回答 2

1

只需创建一个指向具有一些成员函数的对象的空指针并尝试调用其中一个?也许在一个函数中做到这一点,这样你就知道它做了什么

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

绝对是最简单的方法,而且很清楚发生了什么

于 2010-09-02T10:24:18.327 回答
1

您可以使用__debugbreak() 内在函数而不是 DebugBreak() 函数。这什么也没说,并因 EXCEPTION_BREAKPOINT 而崩溃

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

于 2011-04-03T02:15:58.527 回答