随笔分类 - 软件调试
摘要:原定周末把公司的TFS升级到2018,由于TFS 2018需要SQL Server至少是2016以上版本,所以还需要将原来的SQL Server 2012 R2一并升级。今天早上负责的同事告诉我升级失败了。SQL Server 2016的数据库服务无法正常启动。他期间还尝试修复了一次SQL Serv
阅读全文
摘要:最近换新的开发笔记本,分辨率较高发现部分应用在High DPI下几乎没法用。比较纠结的就是WinDbg,频繁切换分辨率、显示文字大小影响工作节奏。幸好PowerShell在High DPI下效果不错。1、下载PowerDbg v62、解压运行Install_PowerDbg.bat3、运行Windo...
阅读全文
摘要:默认Attach to选择了Automatically determine the type of code to debug,显示Native Code。但附加进程到iexplore.exe断点无法命中。解决方法是手动选择Code Type Natvie。
阅读全文
摘要:客户提交一个dump文件,WinDbg加载时出现大量WARNING,加载对应版本的SOS后执行相应命令提示"SOS does not support the current target architecture"。原因在于使用了64位的任务管理器导出了32位进程的dump文件,下面是两个解决方法:...
阅读全文
摘要:在调试时会发现出于性能考虑.NET Framework dll加载的都是ngen版本,比如:System.dll,实际加载System.ni.dll。如果希望加载非ngen版本,可以设置系统环境变量COMPLUS_ZapDisable=1。
阅读全文
摘要:由于JIT的优化在调试Release版本程序集往往没有足够的跟踪信息,比如查看clrstack发现PARAMETERS:= 状态。在程序运行目录下创建一个[程序集名称].ini文件,比如:MyLibrary.dll => MyLibrary.ini。[.NET Framework Debugging...
阅读全文
摘要:起因是发现一个同事编写的程序运行两个月左右,占用了服务器20G左右的内存。用WinDbg查看发现存在大量的Async Pinned Handles,而它们的gcroot都来自于SocketAsyncEventArgs。下面是场景的简易模拟代码(为了说明问题添加了手动GC):for (var i = ...
阅读全文
摘要:Windows Server 2012 + Hyper-V调试Windows XP SP3 32-bit虚拟机。1、Hyper-V选中虚拟机,设置COM port,Named pipe定义一个名字。例如:com_1。2、访问虚拟机,cmd输入msconfig修改boot.ini。高级选项(设置需要一一对应):1)/DEBUG2)/DEBUGPORT=COM13)/BAUDRATE=1152003、重启虚拟机,并打开Debugging Host的WinDbg。选择Kernel Debugging,在COM选项卡输入对应参数,开始进行调试。
阅读全文
摘要:Debugging Target:Windows XP SP3 32-bitDebugging Host:Windows Server 2012 64-bit当附加到目标服务器某个进程后,WinDbg x86(6.11.1.404)提示:unable to initialize target machine information win32 error 0n87这是一个旧版本已知的bug,更新WinDbg版本即可(具体在哪一个版本修复并不清楚,我使用Windows SDK 8.0自带的6.2.9200.16384版本)。
阅读全文
摘要:网上主要提到了以下两点:1、cmd窗口输入bcdedit /debug on,重新启动计算机。2、下载对应版本Windows符号文件,并添加环境变量_NT_SYMBOL_PATH。其实根据环境不同还需要在执行bcdedit后再补充一个命令,如果没有设置localdebug transport的话。b...
阅读全文
摘要:1、注册自定义的UnhandledExceptionFilter,C/C++ Runtime Library下需要注意自定义handler被移除(hook kernel32.dll的SetUnhandledExceptionFilter使它返回一个空指针即可)。PTOP_LEVEL_EXCEPTION_FILTER v_prevUnhandledExceptionFilter;LONG WINAPI UnhandledExceptionHandler(EXCEPTION_POINTERS* ExceptionInfo);v_prevUnhandledExceptionFilter = :...
阅读全文
摘要:去年我已写过一篇关于安装.NET Framework 4.5后特定场景Ajax POST的挂起问题 =>http://www.cnblogs.com/junchu25/archive/2012/10/28/2743205.html,今天补充一些非代码级别的解决方案。前几天用户反馈某个应用一定程度间隔点击无响应(在等待较长时间后恢复正常),页面较为简单Ext.NET的GridPanel + Store。分别在Windows 7 Ultimate、Windows Server 2008 R2 + IIS 7.5运行都存在该问题。首先在我们的Dev、Pub环境(Windows Server 2
阅读全文
摘要:cmdtree可以使大量的键入工作自动化,也可以帮助开发人员将一些常用的命令进行整理,降低入门难度。它有一个简单的文本格式,并通过.cmdtree [filename]的格式加载它,例如一个名为sos.txt的文件。.cmdtree D:\sos.txt格式定义很简单,每一行不是一个树节点就是一个有命令的叶子。如下:windbg ANSI Command Tree 1.0title {"标题"}body{"node1"} {"leaf11"} {"command"} {"leaf12"} {&q
阅读全文
摘要:客户反应一个应用没有规律性的错误,一旦异常发生后大部分功能无法再使用,除非重新启动应用程序池。异常内容大致如下:2282 Error 无法将[141]绑定到字段 ID(不能从System.Int32转换为System.Int32) |--对象与目标类型不匹配。查看callstack了解到该异常由OR mapping的组件引起,调用System.Reflection.PropertyInfo的SetValue抛出异常。MSDN描述导致TargetException的情况如下:The object does not match the target type, or a property i...
阅读全文
摘要:今天开发人员提交同一个程序的两个dump文件,运行环境Windows Server 2008 R2、.NET Framework 2.0。当使用WinDbg分析第二个文件时,加载sos执行命令提示如下:0:000> .load C:\Windows\Microsoft.NET\Framework64\v2.0.50727\sos.dll0:000> !clrstackFailed to find runtime DLL (mscorwks.dll), 0x80004005Extension commands need mscorwks.dll in order to have so
阅读全文
摘要:1、加载调试扩展sos.dll,对应路径由CLR版本决定(比如:v2.0.50727、v4.0.30319).load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.dll2、显示当前托管堆栈,显示非托管用kb!clrstack!clrstack -akb3、显示托管线程!threads!threads -live4、显示所有线程下托管调用堆栈~* e !clrstack5、设置断点!bpmd ConsoleApplication1.exe ConsoleApplication1.Program.Main6、查看当前托管调用堆栈对象实例
阅读全文
摘要:开发人员反映原有一个功能在点击修改提交表单后,浏览器就无响应,除非关闭。之前开发、测试服务器所做的更新只有安装了.NET Framework 4.5,由于之前博客园的dudu也碰到过相同类似问题(http://www.cnblogs.com/dudu/archive/2012/09/14/ie_mv...
阅读全文
摘要:开发人员提交一个dump文件(Windows Server 2008 R2),当前调试环境Windows Server 2012,加载sos.dl执行~* e !clrstack,提示如下错误:Failed to load data access DLL, 0x80004005Verify that 1) you have a recent build of the debugger (6.2.14 or newer) 2) the file mscordacwks.dll that matches your version of clr.dll is ...
阅读全文
摘要:上周四产品上线一切运行正常,做了一点小改动后周四晚上发布,周五大量用户反馈在访问页面时出现长时间等待响应。将4台Web前端的服务器重启,缓存服务器2台重启,问题依旧。由于是生产环境,只能上去查看IIS、Windows日志,没有记录任何异常。于是将版本更新回周四凌晨发布版本,运行正常。据版本跟踪只修改...
阅读全文