Win32:如何崩溃?

时间:2010-04-28 14:40:26

标签: windows winapi windows-xp error-reporting windows-error-reporting

我正在试图弄清楚Windows错误报告的保存位置;我今天早些时候点击了发送,但我忘记了我想“查看详细信息”,以便我可以检查内存小型转储。

但我无法找到它们的存储位置(谷歌不知道)。

所以我想写一个会崩溃的虚拟应用程序,显示WER对话框,让我点击“查看详细信息”,这样我就可以到达保存转储的文件夹。

我如何在Windows上崩溃?

编辑:我问的原因是因为我尝试过堆栈,浮点除以零。 Stack Overflow使应用程序消失,但没有弹出WER对话框。浮点除以零导致+ INF,但没有异常,也没有崩溃。

7 个答案:

答案 0 :(得分:4)

你们都这么啰嗦! : - )

这是一种紧凑的方式:

*((int*)0)=0;

答案 1 :(得分:2)

应该是一个好的开始:

int main(int argc, char* argv[])
{
   char *pointer = NULL;
   printf("crash please %s", *pointer);
   return 0;
}

答案 2 :(得分:1)

您假设内存转储仍然存在。一旦发送,AFAIK将从机器中删除转储。

转储本身应位于%TEMP%某处。

就崩溃而言,这并不困难,只需做一些导致段错误的事情。

答案 3 :(得分:0)

不确定这是否会触发错误报告对话框,但您可以尝试除以零。

答案 4 :(得分:0)

void crash(void)
{
    char* a = 0;
    *a = 0;
}

答案 5 :(得分:0)

可以在此处找到官方支持的故意触发崩溃的方法:

http://msdn.microsoft.com/en-us/library/ff545484(v=VS.85).aspx

基本上:

  

使用USB键盘,您必须启用   键盘发起的崩溃   注册表中。在注册表项中   HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \服务\ kbdhid \参数,   创建一个名为的值   CrashOnCtrlScroll,并将其设置为等于   REG_DWORD值为0x01。

然后:

  

您必须重新启动系统   设置生效。

     

完成后,键盘   崩溃可以通过使用   按照热键顺序:按住   最右边的CTRL键,然后按   滚动锁定键两次。

无需编程;)此处无轮改造:)

答案 6 :(得分:0)

有兴趣知道如何崩溃Windows。但为什么不看看

%allusersprofile%\Application Data\Microsoft\Dr Watson\ 

第一?请注意特定应用程序特定的crashdata文件夹,我发现例如

...\FirefoxPortable\Data\profile\minidumps\ 

...\OpenOfficePortable\Data\settings\user\crashdata\.