互软研发团队

Talk is cheap. Show me the code.

使用DebugDiag抓取ASP.NET程序错误并初步分析

https://www.microsoft.com/en-us/download/details.aspx?id=49924Debug Diag可以用来追踪Windows下崩溃、性能和内存泄漏等一些疑难问题的原因。更详细的使用方式可以参考:https://msdn.microsoft.com/en-us/library/ff420662.aspx?f=255&MSPPError=-2147217396

1、安装Debug Diagnostic Tool v2 Update 2,下载地址:

2、运行Debug Diagnostic Tool

3、点击"Add Rule"按钮,在弹出的对话框中选择"Crash"选项。代表我们当应用程序运行奔溃时候想要抓取dump文件

4、目标类型选择"A specific IIS web application pool",代表我们想要指定一个应用程序池

5、选择了对应的应用程序池以后,点击下一步进入高级配置

6、如果知道异常的名称或者包含的关键字,点击"Exceptions"按钮进入异常相关配置

7、点击"Add Exception",根据.NET Framework的版本差异可以选择"CLR 1.0 - 3.5"或者"CLR 4.x"。在Exception Type Equals一栏可以输入异常的类型名称(例如:System.ArgumentException)或者在Exception Message Includes一栏输入包含的错误消息(例如:未将对象引用设置到对象的实例)。"Action Type"选择"Full userdump"。

8、根据向导一步步操作到最后,并激活新增的规则。当出现对应的错误以后DebugDiag就会产生对应的dump文件。我们运行另一个工具DebugDiag Analysis

9、点击"Add Data Files"添加我们需要分析的dump文件,根据实际情况选择要进行的分析内容,然后点击"Start Analysis"进行分析。DebugDiag Analysis会给出比较详细的分析结果提供参考

使用Visual Studio进行远程调试

由于服务器环境限制,进行Live Debugging不可能再安装Visual Studio。在不熟CDB、WinDbg等情况下推荐使用Visual Studio自带的远程调试功能。参考下面步骤:

1、将Visual Studio Remote Debugger Monitor部署到被调试服务器。如何获取Remote Debugger?以Visual Studio 2013为例,目录:C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Remote Debugger,被调试进程64位则复制该目录下的x64目录
2、已管理员身份启动msvsmon.exe,顶部菜单选择Tools -> Options。在弹出窗口的Authentication mode选择No Authentication,并勾选Allow any user to debug

3、启动Visual Studio,并打开要调试的解决方案或对应源代码文件。顶部菜单Debug -> Attach to Process,弹出对话框的Transport选择Remote(no authentication)、Qualifier输入被调试服务器IP或计算机名、选择要调试的进程,最后单击附加


使用PowerShell替代WinDbg在高分辨率笔记本下调试、排错

最近换新的开发笔记本,分辨率较高发现部分应用在High DPI下几乎没法用。比较纠结的就是WinDbg,频繁切换分辨率、显示文字大小影响工作节奏。cmd跑cdb调试效果也非常糟糕,幸好PowerShell在High DPI下效果不错。

1、下载PowerDbg v6
2、解压运行Install_PowerDbg.bat
3、运行Windows PowerShell,设置本地不受限制的执行策略。输入:Set-ExecutionPolicy Unrestricted
4、导入PowerDbg模块,输入:Import-Module PowerDbg
5、环境变量中设置调试器的路径,例如:$env:DebuggingTools="C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86";
6、启动调试会话,并指定dump file路径。例如:New-DbgSession -dump "D:\1.dump"
7、加载调试器扩展,比如调试.NET的sos:Load-DbgExtension C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos.dll
8、执行调试器命令,例如:Invoke-DbgCommand kb