Windows程序崩溃捕获一例

背景:

  windows系统内某进程总是异常崩溃退出,导致程序频繁死掉,windows自带崩溃捕获dump的功能,只需要我们手动设置一下即可
  
  

1.启动 Windows Error Reporting Service 服务
wdump1

2.移除默认的调试器

如果你的机器装了VS开发工具,会在注册表里写入调试器地址,需要把它删除

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger

在 64 位 操作系统上也删除以下注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger

3、执行下面注册表脚本,添加程序崩溃捕获dump(这个设置是捕获所有的程序崩溃的dump,可能会产生的文件比较多也比较大)

@echo off  
echo 正在启用Dump...  
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps"  
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpFolder /t REG_EXPAND_SZ /d "C:\CrashDump" /f  
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpType /t REG_DWORD /d 2 /f  
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpCount /t REG_DWORD /d 10 /f  
echo Dump已经启用  
pause  
@echo on

如果想捕获某一个进程,则参考如下设置:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\w3wp.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:\Windows\SysWOW64\KERNELBASE.dll has caused a CLR Exception on thread 981 with the following error information
Type:   System.Net.Sockets.SocketException
Message:   远程主机强迫关闭了一个现有的连接。

与开发核实后,该进程在连接重试方面存在问题,调整连接机制后崩溃问题恢复(keepalive+reconnect)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值