Win32:如何崩溃?
-
02-10-2019 - |
题
我正在尝试找出Windows错误报告保存的位置;我打 发送 在今天早些时候,但我忘记了我想“查看细节”,以便我可以检查记忆缩影。
但是我找不到它们存储的位置(而Google不知道)。
因此,我想编写一个会崩溃的虚拟应用程序,显示WER对话框,让我单击“查看详细信息”,以便我可以到达保存转储的文件夹。
我如何在Windows上崩溃?
编辑: 我问的原因是因为我尝试溢出堆栈,而浮点则除以零。堆栈溢出使应用程序消失,但没有弹出对话框。浮点划分为零导致 +INF,但没有例外,也没有崩溃。
解决方案
应该是一个好的开始:
int main(int argc, char* argv[])
{
char *pointer = NULL;
printf("crash please %s", *pointer);
return 0;
}
其他提示
你们都很详细! :-)
这是一种紧凑的方法:
*((int*)0)=0;
您假设内存转储仍然存在。发送后,将它们从机器上删除。
垃圾场本身应位于某个地方的%temp%。
就崩溃而言,这并不困难,只是做一些导致segfault的事情。
不确定这是否会触发错误报告对话框,但是您可以尝试使用零。
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的值,并将其设置为reg_dword值等于0x01。
然后:
您必须重新启动这些设置才能生效。
完成此操作后,可以使用以下热键序列来启动键盘崩溃:按下最右侧的CTRL键,然后两次按滚动锁定键。
无需编程;)这里没有重新发明:)
有趣的是知道如何崩溃窗口。但是为什么不看看
%allusersprofile%\Application Data\Microsoft\Dr Watson\
第一的?请注意特定于应用程序的CrashData文件夹,我发现EG
...\FirefoxPortable\Data\profile\minidumps\
和
...\OpenOfficePortable\Data\settings\user\crashdata\.