Chr*_*ith 83 windows testing crash-reports windows-vista windows-error-reporting
当应用程序在Windows上崩溃并且安装了Visual Studio等调试程序时,将显示以下模式对话框:
[标题:Microsoft Windows]
X已停止工作
一个问题导致程序停止正常工作.Windows将关闭程序并在解决方案可用时通知您.
[调试] [关闭申请]
有没有办法禁用此对话框?也就是说,让程序崩溃并无声地刻录?
我的情况是我想运行几个自动化测试,其中一些将因测试中的应用程序中的错误而崩溃.我不希望这些对话框停止自动化运行.
搜索我认为我已经找到了在Windows XP上禁用此功能的解决方案,这是修改此注册表项:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
但是,这在Windows Vista上不起作用.
Nic*_*icJ 54
要强制Windows错误报告(WER)进行故障转储并关闭应用程序,而不是提示您调试程序,您可以设置这些注册表项:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting]
"ForceQueue"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\Consent]
"DefaultConsent"=dword:00000001
Run Code Online (Sandbox Code Playgroud)
设置完成后,当您的应用程序崩溃时,您应该看到*.hdmp和*.mdmp文件:
%ALLUSERSPROFILE%\Microsoft\Windows\WER\
Run Code Online (Sandbox Code Playgroud)
小智 45
看这里:
http://msdn.microsoft.com/en-us/library/bb513638.aspx
注册表编辑器
DWORD HKLM或HKCU\Software\Microsoft\Windows\Windows错误报告\ DontShowUI ="1"
会让WER默默地报道.然后你可以设置
DWORD HKLM或HKCU\Software\Microsoft\Windows\Windows错误报告\禁用="1"
阻止它与MS交谈.
Luk*_*ane 35
我不确定这是否指的是完全相同的对话框,但这是Raymond Chen的另一种方法:
DWORD dwMode = SetErrorMode(SEM_NOGPFAULTERRORBOX);
SetErrorMode(dwMode | SEM_NOGPFAULTERRORBOX);
Run Code Online (Sandbox Code Playgroud)
arm*_*nzg 27
我不得不禁用这个用于Firefox的Windows 64位的发布自动化工作,我做了以下事情:
它类似于客户体验报告所完成的内容:http: //www.blogsdna.com/2137/fix-windows-installer-explorer-update-has-stopped-working-in-windows-7.htm
Gea*_*phy 12
在我的上下文中,我只想抑制单元测试的弹出窗口,而不是整个系统.我发现需要一组函数来抑制这些错误,例如捕获未处理的异常,抑制运行时检查(例如堆栈指针的有效性)和错误模式标志.这是我用过的一些成功:
#include <windows.h>
#include <rtcapi.h>
int exception_handler(LPEXCEPTION_POINTERS p)
{
printf("Exception detected during the unit tests!\n");
exit(1);
}
int runtime_check_handler(int errorType, const char *filename, int linenumber, const char *moduleName, const char *format, ...)
{
printf("Error type %d at %s line %d in %s", errorType, filename, linenumber, moduleName);
exit(1);
}
int main()
{
DWORD dwMode = SetErrorMode(SEM_NOGPFAULTERRORBOX);
SetErrorMode(dwMode | SEM_NOGPFAULTERRORBOX);
SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)&exception_handler);
_RTC_SetErrorFunc(&runtime_check_handler);
// Run your tests here
return 0;
}
Run Code Online (Sandbox Code Playgroud)
小智 8
在WPF应用程序中
[DllImport("kernel32.dll", SetLastError = true)]
static extern int SetErrorMode(int wMode);
[DllImport("kernel32.dll")]
static extern FilterDelegate SetUnhandledExceptionFilter(FilterDelegate lpTopLevelExceptionFilter);
public delegate bool FilterDelegate(Exception ex);
public static void DisableChashReport()
{
FilterDelegate fd = delegate(Exception ex)
{
return true;
};
SetUnhandledExceptionFilter(fd);
SetErrorMode(SetErrorMode(0) | 0x0002 );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84123 次 |
| 最近记录: |