蓝屏 Dump文件分析方法windbg汉化
最终发现了蓝屏原因是我编写的一个小软件在显示动态曲线时导致I对象被耗尽的缘故。
bluescreenview大小才几十kb,有绿色汉化的。打开后,它会列出C:\下的崩溃文件。双击相应条目,弹出更详细的属性信息:
但我却写成了:
2、BlueScreenView和WhoCrashed
PrimaryAnalysis
WhoCrashedhome版显示的更不怎么详细,同样的dump文件才显示如下的一点内容而已。不推荐~
CBitmap*CDC::SelectObject(CBitmap*pBitmap){return(CBitmap*)SelectGdiObject(m_hDC,pBitmap-GetSafeHandle());}
后面两个软件只定位到win32k.sys这个文件,至于更详细的内容基本没了。
虽CDC::SelectObject(HIOBJhObject)在MSDN中没有提到(MSDN有CGdiObject*SelectObject(CGdiObject*pObject)),但i却有其定义,且调试时到了这里~~~可看到错误的选入了HIOBJ句柄,而不是HBITMAP句柄~~~
里面提到的重点就是dwm.exe和win32k.sys。事实的确如此,今天我电脑蓝屏前,就是dwm.exe先异常的!!!dwm.exe是桌面窗口管理器~~~它为什么会崩溃呢?见下文
推荐第一个在线分析网站,对dump文件分析的很全面!也不需要安装什么软件~~~
调试:
正确代码第一句将进入:
//错误代码:CBitmap*pOldBmp=(CBitmap*)memdc.SelectObject(memBmp);......memdc.SelectObject(pOldBmp);//返回NULL,倒不会导致gdi对象增加!!返回非NULL,gdi对象占用将不断增加
//正确代码:mdc.SelectObject(pOldBmp);