IIS故障 应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误。该进程 ID 为“XXXX”。数据字段包含错误号。
(尝试失败,但觉得有可行性)
参考https://www.cnblogs.com/qidian10/p/6028784.html
https://yq.aliyun.com/articles/643497
https://www.cnblogs.com/byfei/p/6389775.html
日志中大量报错,IIS严重错误,此类错误默认情况下5分钟连续出现5次会导致IIS应用程序池直接挂掉,临时补救该错误的一个方法为,调整应用程序池“服务不可用”响应类型为TcpLevel
解决办法: 通过dmp文件直接跟踪iis崩溃的原因
1、启动 Windows Error Reporting Service 服务
2、执行下面注册表脚本,设置w3wp.exe 崩溃时自动抓取dmp文件,保存在D:\dumps文件夹里
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\w3wp.exe]
"DumpFolder"=hex(2):64,00,3a,00,5c,00,64,00,75,00,6d,00,70,00,73,00,00,00
"DumpCount"=dword:00000002
"DumpType"=dword:00000002
3、查看dmp文件
IIS崩溃后,在D:\dumps文件夹能看到dmp文件,可以用于分析dmp文件,找出IIS崩溃的原因。
使用VS调试
托管 ======> 适用于在公共语言运行时下运行的代码 所谓托管是指内存管理由系统而不是由程序员管理 大家都知道c#有关内存都是CLR来管理的
混合 ======>对托管代码和非托管代码都调用调试器
本机 ======>适用于非托管代码
调试问题
1. dump文件和pdb文件的匹配问题
>> 发布二进制文件时生成的pdb文件一定要保留,只有当发布的二进制文件和pdb文件是同时生成的才好正确调试。
2. dump文件和pdb文件放在哪里的问题
>> 如果dump文件和pdb文件放在同一个目录,则可直接运行调试;当然也可以不是同一个目录,那么在启动dmp文件后,需要设置一下vs的符号文件路径:Tools->Options->Debugging->Symbols. 如果需要调试windows自带的一些dll或者exe,则可以在这里添加windows的pdb文件服务器:http://msdl.microsoft.com/download/symbols
3. 二进制文件放在哪里的问题
>> 现场恢复需要二进制文件,但不必所有的二进制文件都需要,所以即使你的机器和用户的机器操作系统不一样也没关系;出问题的如果是你发布的二进制文件,则只需要你发布的二进制文件就可以了。vs在加载二进制的文件失败的时候会打印出其详细路径,但这是用户机器上的路径,没有必要一定要跟这个路径一样,把你发布的二进制文件放到dump文件目录就可以了。
4. 显示不了源代码的问题
>> 首先需要设置源代码目录,右键solution:Properties->Common Properties->Debug Source Files,里边加入你的本地源代码目录就是了;但是如果代码已经改过了,恢复不到当时的状态,vs显示不了源码怎么办?只要设置:Tools->Options->Debugging->General->Require source files to exactly match the original version 这个复选框钩掉就可以了