1

我想弄清楚Windows错误报告的保存位置;我打今天早些时候发送,但我忘了我想“查看细节”,所以我可以检查内存小转储。Win32:如何崩溃?

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

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

我如何在Windows上崩溃?

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

+0

我得到了其中的一个有窗户,免费 – 2010-04-28 14:51:47

+0

@ M28:你应该联系都崩溃的应用程序的开发。在我的情况下,它是通过ASP脚本宿主将我们的进程内COM对象加载到IIS6的工作空间中。 – 2010-04-28 15:01:39

+0

它叫做windows,我在哪里可以找到它的开发者? :B – 2010-04-28 15:31:54

回答

2

应该是一个良好的开端:

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

可能希望将指针设置为NULL以外的值,因为printf可能会检查它。也许是0xDEADBEEF? – 2010-04-28 14:48:21

+0

我用你的想法,我把null投射到一个物体上,然后开始调用方法。 * boom * – 2010-04-28 14:59:26

+0

@Billy ONeal:它实际上不是'printf',它正在崩溃,这是试图解引用空指针。 'printf'只是可爱的,'char * pointer = NULL; char crash = *指针;'也会起作用。 – KevenK 2010-04-28 15:50:23

1

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

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

至于崩溃,这并不难,只要做一些事情,导致段错误。

+0

我的前两次尝试做不到这一点很困难。 KevinK的想法,引用地址0x00000000工作。 – 2010-04-28 14:58:54

+0

你似乎是对的,内存转储,在XP上,一旦发送就消失。作为**问题报告和解决方案中心**的一部分,Vista保留了它们。 – 2010-04-28 15:00:08

0

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

+0

这只是抛出一个异常。它不会在Win32上崩溃。 (请注意,我不是指C++的异常,我的意思是Win32 SEH) – 2010-04-28 14:49:29

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

你们都这么冗长! :-)

这里有一个紧凑的方式做到这一点:

*((int*)0)=0; 
+0

大声笑...有效的崩溃? – mpen 2010-07-15 08:15:33

+0

:-)你应该看看我的空闲循环运行得有多快...... – 2010-07-19 08:31:27

0

的官方支持的方式来触发目的的崩溃可以在这里找到:

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

基本上是:

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

然后:

,必须重新启动系统,这些 设置生效。

此完成后,键盘 崩溃可以通过使用 以下热键启动:按住 最右边的Ctrl键,然后按 SCROLL LOCK键两次。

无需编程;)无轮重塑在这里:)

+0

这个方法如何知道我正在调试哪个进程? (修辞问题;你的答案是触发内核模式异常和蓝屏;我想触发用户模式进程的默认崩溃处理 - 我的进程) – 2011-01-18 14:21:43

+0

我的不好。我原以为你试图触发一般崩溃来查看转储文件,而不是特定的进程崩溃。 – GWLlosa 2011-01-18 14:23:35

0

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

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

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

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

...\OpenOfficePortable\Data\settings\user\crashdata\. 
+0

为什么?为什么不看那里?因为我不知道那个路径 - 并且该文件夹在我的机器上不存在。 – 2011-01-18 14:22:56