概述
背景:
windows系统内某进程总是异常崩溃退出,导致程序频繁死掉,windows自带崩溃捕获dump的功能,只需要我们手动设置一下即可
1.启动 Windows Error Reporting Service 服务
2.移除默认的调试器
如果你的机器装了VS开发工具,会在注册表里写入调试器地址,需要把它删除
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionAeDebugDebugger
HKEY_LOCAL_MACHINESOFTWAREMicrosoft.NETFrameworkDbgManagedDebugger
在 64 位 操作系统上也删除以下注册表项:
HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftWindows NTCurrentVersionAeDebugDebugger
HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoft.NETFrameworkDbgManagedDebugger
3、执行下面注册表脚本,添加程序崩溃捕获dump(这个设置是捕获所有的程序崩溃的dump,可能会产生的文件比较多也比较大)
@echo off
echo 正在启用Dump...
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumps"
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumps" /v DumpFolder /t REG_EXPAND_SZ /d "C:CrashDump" /f
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumps" /v DumpType /t REG_DWORD /d 2 /f
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumps" /v DumpCount /t REG_DWORD /d 10 /f
echo Dump已经启用
pause
@echo on
如果想捕获某一个进程,则参考如下设置:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumpsw3wp.exe]
4,查看dump文件,按照上面的设置,对应的dump文件在
“C:CrashDump” 这个目录下面
5,分析dump使用windbg这个工具,安装后自动关联dump文件,双击dump文件即可自动分析,生成分析报告
由于没有现场截图,贴上当时分析报告的主因:
In GetTCP_Winform_Service.exe.5356.dmp the assembly instruction at KERNELBASE!RaiseException+58 in C:WindowsSysWOW64KERNELBASE.dll has caused a CLR Exception on thread 981 with the following error information
Type: System.Net.Sockets.SocketException
Message: 远程主机强迫关闭了一个现有的连接。
与开发核实后,该进程在连接重试方面存在问题,调整连接机制后崩溃问题恢复(keepalive+reconnect)
最后
以上就是开放香菇为你收集整理的Windows程序崩溃捕获一例的全部内容,希望文章能够帮你解决Windows程序崩溃捕获一例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复