Win32:如何崩溃?

我试图找出Windows错误报告保存在哪里; 我今天早些时候点击发送 ,但我忘了我想“查看细节”,所以我可以检查内存小转储。

但我找不到他们存储在哪里(和谷歌不知道)。

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

我怎样才能在Windows上崩溃?

编辑:我问的原因是因为我已经尝试溢出堆栈,浮点除以零。 堆栈溢出使应用程序消失,但没有WER对话框popup。 浮点除零的结果是+ INF,但没有例外,也没有崩溃。

应该是一个好的开始:

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

你们都这么冗长! 🙂

这是一个紧凑的方法来做到这一点:

 *((int*)0)=0; 

你正在假设内存转储还在。 一旦发送,AFAIK转储从机器上删除。

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

至于崩溃,这并不困难,只是做一些导致段错误的东西。

不知道这是否会触发错误报告对话框,但你可以尝试除以零。

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

可以在这里找到正式支持的触发崩溃的方法:

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

基本上:

使用USB键盘,您必须在注册表中启用键盘启动的崩溃。 在注册表项HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ kbdhid \ Parameters中,创建一个名为CrashOnCtrlScroll的值,并将其设置为等于0x01的REG_DWORD值。

然后:

您必须重新启动系统才能使这些设置生效。

完成此操作后,可以使用以下热键顺序启动键盘故障:按住最右边的CTRL键,然后按两下SCROLL LOCK键。

没有必要的编程;)在这里没有车轮改造:)

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

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

第一? 请注意特定于应用程序的crashdata文件夹,例如,我找到了

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

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