我的应用程序内置了自定义崩溃处理功能(请参阅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下崩溃您的应用程序?
答案 0 :(得分:1)
只需创建一个指向对象的空指针,其中一些成员函数是try并调用其中一个?也许可以在一个函数中执行它,这样你就知道它是什么了
void CrashApp()
{
MyObject * ptr = 0;
ptr->Function();
}
绝对是最简单的方法,而且非常清楚最新情况
答案 1 :(得分:1)
您可以使用__debugbreak() intrinsic代替DebugBreak()函数。这没有说任何事情并且与EXCEPTION_BREAKPOINT
崩溃RaiseException()是另一种崩溃方式。