如何用windebug dump分析客户端崩溃

windebug 使用_搜索_中华文本库
如何使用Debugging Tools for Windows (windebug)简单的使用心得_IT/计算机_专业资料。Debugging Tools for Windows 是微软的一个蓝屏故障调试工具,可以方便地解 决...
如何使用Debugging Tools for Windows(简单的使用心得)分析蓝屏_IT/计算机_专业资料...通过 windebug 的软件来 分析这个 minidump 文件.我们就可以找到蓝屏出错的原因...
windbg调试dmp_IT/计算机_专业资料。WINDEBUG 调试 dump如何根据程序崩溃时的 DMP 文件使用 WinDbg 查找调用堆栈 HOW TO: 查找问题的异常堆栈时出现的 UnhandledExcept...
debugview使用技巧_计算机软件及应用_IT/计算机_专业资料。Debugview 使用技巧 用...也就相当于我们的应用的 Debug 信息 注意:只有调用了 WinDebug 中方法的地方的...
1.在 C#中的使用方法: 将 WinDebug.cs 加入到项目中,也可以编译成.dll 文件引入。然后在程序中需要输出调试信 息调用即可。 详情请参见源码部分。 2.DbgView ...
使用 Debugging Tools for Windows (windebug)来分析 dump 文件 3.1 什么是 windebug 3.2 windebug 最新版安装方法(此方法为在线安装) 3.3 windebug 的 symbol ...
我们使用 windbg 的主要用途是来抓取 IE 崩溃产生的 dmp 文件,然 后可以查看是哪个模块导致崩溃,从而协助开发判断分析问题所在。 二、 使用方法 1. 设置 WinDbg ...
需要 用到 Windows 系统工具 windebug,用此可以通过 Windows 系统产生 的 dmp 文件来初步查看蓝屏产生的原因或者是导致蓝屏的模块, 当然, windebug 工具的使用博大...
3、VGX.DLL 漏洞原理分析 产生这个漏洞的根本原因是在使用 MSHTML 中的 Carkup...如下图所示: 下面是触发该漏洞的一个页面所执行的程序的 WINDEBUG 内存追踪, ...
(主机并口&=&实验平台 JTAG) 2)实验平台调试监控 接口:主机 USB &=&实验平台 USB,程序:WinDebug 说明、安装、使用 见 platform 文件夹 主文件是《CPU 及其...戴尔客服电话/,进来后会提示您输入服务编号#结束,不用输入服务编号,您就直接按#键,然后会再提示一次,再按#,就会进入人工。然后把机子背后有一个七位数,有数字跟字母组合的编号,提供给工程师,他们会帮您处理的。
&最近贴吧论坛有很多人15年款外星人安装win7旗舰版系统 会出现关机蓝屏报错:0x
&尝试解决办法如下面:
1.修改注册表试试
故障现像一:
1.WINDOWS 7只有机械硬盘没有固态硬盘的情况发生0X0009F蓝屏。
2.WINDOWS 7装有固态,电脑不蓝屏,但是会硬盘莫铭的丢失,后面自己又出来。
解析:两个问题其实是一个,因为有固态的系统装固态里面,所以硬盘丢失的时候不会蓝屏。而只有机械的时候。硬盘丢失的时候就会出现蓝屏
故障现像二:
8只有机械硬盘,没有固态硬盘的情况蓝屏,提示Driver_Power_State_Failure,从WINDUG提取的蓝屏样本来分析同样为9F的蓝屏。
8装有固态,电脑不蓝屏,但是会硬盘莫铭的丢失,后面自己又出来。在BIOS可以找到硬盘。但设备管理器和磁盘管理找不到
刚好有客户有反应这个问题 。。
大家可以看 用红线画出来的部分,AC= NONE AC adapter就是交流适配器的意思。
这里适配器是不识别的。
如果这边是显示180W & 240W &那说明适配器是正常的
如果遇到适配器是不识别的话 那就可能是适配器坏了 。
可以尝试如下操作试试看:
需要重新拔插一下适配器。或者无效的话。也可以试试F9恢复下BIOS默认值。&
如果都不可以 一般是适配器坏了。
一个简单而又高效率的解决问题方法,经常被同学们遗忘。它就是自带的系统还原。
它可以解决一些系统的疑难杂症。甚至一些大师级搞不清楚,解决不了的问题也都被它搞定。好吧。其它很简单,很多同学也懂这个,但会忘记去使用。这里只是提醒下大家。有时候纠结怎么解决,还不如一下子就解决~~~(WIN7
WIN8通用。)
如果有同学发现自己的系统还原关闭的,现在没问题可以开启他,提醒大家。开启系统还原后会给磁盘增加空间浪费,如果同学硬盘不够用什么的。可以忽略。
1.点开始菜单,有个计算机,右键单击计算机,点属性。
2.点左边那个系统保护
有的设置GFE自动下载更新驱动,可能造成更新了NVIDIA公版驱动,而造成田莫名其妙的帧数下降,游戏变卡。
GFE见下图:
下图为设置自动更新。建议取消:
如果游戏变卡可以看看,是不是更新了驱动。可以用回滚
1,先要做的当然就是下载需要安装的系统的镜像文件
下面提供几个系统的下载的链接
& WIN7 &系统镜像:/s/1i3FvYvF
& &国行WIN8.1 :/s/18TZOU
& WIN 8 系统镜像 &/s/1i3Jyy4t
激活码6BQND-KKTJ7-CQJPT-G6TGC-CKBCD&
2,简单介绍下如果使用老毛毛桃制作U盘系统安装盘过程
首先下载老毛桃,链接:http://www.laomaotao.in/&
其次安装好就可以制作U盘安装盘了,先插上8G以上空间的U盘
winkey+i &打开控制面板/ 查看方式 选择:小图标
问题描述:
经常会有一些客户在特定网络出现PING掉帧,网络卡,LOL掉PING,校园网或拨号连接出现连接受限上不了网。
这些情况很大原因是KILLER网卡自带应用程序,映射网络或是宽带控制造成。
不管从2006年开始INTEL出现的PROSET无线软件还是到现在的KILLER无线软件,都会造成一些带宽延迟或损耗情况。
请按下面方法卸载网络驱动程序并手动安装,只装驱动不装应用。为你的电脑减压。
1.下载好无线网络和有线网络驱动。放在你电脑上。
2.到控制面版带KILLER应用的网络驱动程序
最近不少吧友会出现蓝屏情况,看看大家蓝屏是由什么情况引起,收集一下信息,回头终合一下找下解决方案再公布。
发生蓝屏时,会自动生成minidump文件,该文件记录蓝屏生成代码和导致蓝屏出现的进程,通过windebug的软件来分析这个minidump文件.我们就可以找到蓝屏代码和导致蓝屏软件。这个文件保存目录是C:\windows\minidump文件夹,生成的名字为:MINI蓝屏日期.dmp
我需要收件的是分析好的截图。因为导致蓝屏的文件有可能是系统文件,是不可删除,如果导致蓝屏文件是应用程序文件就可以直接删除即可。
1.下载蓝屏文件分析工具WINDUBUG,下载地址:/download/symbols/debuggers/dbg_x86_6.11.1.404.msi
2.下载Symbols(蓝屏特征库),下载地址:/en-us/windows/hardware/gg463028.aspx
特征库按你的系统来选择,见下图:200分求答案,如何获得程序崩溃地址所对应的代码行?
[问题点数:150分,结帖人cmoth]
200分求答案,如何获得程序崩溃地址所对应的代码行?
[问题点数:150分,结帖人cmoth]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关推荐:
2007年11月 总版技术专家分月排行榜第三
2007年10月 VC/MFC大版内专家分月排行榜第一2007年9月 VC/MFC大版内专家分月排行榜第一2008年6月 移动平台大版内专家分月排行榜第一2008年4月 移动平台大版内专家分月排行榜第一2008年3月 移动平台大版内专家分月排行榜第一2008年1月 移动平台大版内专家分月排行榜第一2007年11月 移动平台大版内专家分月排行榜第一2007年10月 移动平台大版内专家分月排行榜第一2007年8月 移动平台大版内专家分月排行榜第一
2008年1月 总版技术专家分月排行榜第三
2008年1月 VC/MFC大版内专家分月排行榜第一2007年12月 VC/MFC大版内专家分月排行榜第一
2007年10月 VC/MFC大版内专家分月排行榜第二
2006年4月 荣获微软MVP称号2007年4月 荣获微软MVP称号
2005年12月 VC/MFC大版内专家分月排行榜第一2005年11月 VC/MFC大版内专家分月排行榜第一2005年10月 VC/MFC大版内专家分月排行榜第一2005年9月 VC/MFC大版内专家分月排行榜第一2005年7月 VC/MFC大版内专家分月排行榜第一
2007年11月 总版技术专家分月排行榜第三
2007年10月 VC/MFC大版内专家分月排行榜第一2007年9月 VC/MFC大版内专家分月排行榜第一2008年6月 移动平台大版内专家分月排行榜第一2008年4月 移动平台大版内专家分月排行榜第一2008年3月 移动平台大版内专家分月排行榜第一2008年1月 移动平台大版内专家分月排行榜第一2007年11月 移动平台大版内专家分月排行榜第一2007年10月 移动平台大版内专家分月排行榜第一2007年8月 移动平台大版内专家分月排行榜第一
2008年1月 总版技术专家分月排行榜第三
2008年1月 VC/MFC大版内专家分月排行榜第一2007年12月 VC/MFC大版内专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。客户端程序发布后在用户的计算机上运行,不可能时时刻刻的处于 WinDbg 的监控之下,恐怕没有一个用户会喜欢这样的程序的,所以我们要想办法把程序崩溃时的状态存储到一个文件中,然后通过该文件使用 WinDbg 来查看程序崩溃时的状态,来确定程序为什么发生了异常;
我们要实现的功能是:用户运行发行版的程序,该程序如果一旦发生异常,立刻收集异常时程序的内部信息,然后分门别类的输出到几个文件,此后出现一个界面询问用户是否发送错误报告给软件发行商,用户可以选择发送哪些文件或者不发送错误报告,如果用户点击“发送错误报告”,那么将用户愿意发送的错误输出文件打包到一个 ZIP 文件中,并通过 SMTP 发送到软件发行商的报修邮箱中;
首先我们要考虑的是,程序崩溃时已经不可能实现太多的功能,因为此时的程序已经处于异常状态了,所以在崩溃的程序内部仅仅实现输出错误信息,例如程序的状态、程序加载的模块(哪些动态库),这些动态库的版本和编译时间等,然后启动一个指定的程序,该程序实现后续的功能:提示用户发送错误报告、将错误输出文件打包为 ZIP 文件,然后发送到软件发行商的用户报修邮箱中;
从 Windows 2000 开始系统就提供了 DbgHelp.dll ,但是直到 WinXP 该动态库才算是真正提供了程序异常时完整的信息收集机制,所以如果你的程序需要在 WinXP 之前的计算机上运行,那么最好附带自己的 DbgHelp.dll 文件,该文件在 WinDebug 的安装目录中也有,可以直接复制使用;
另外 WinDebug 还提供了 DbgEng.dll ,该动态库就是 CDB.exe 和 WinDbg.exe 的调试引擎,内部提供仿 COM 接口的完整调试接口,可以自己实现特定的半自动化调试工具,此处不详细解说,有兴趣的可以自己参考相关的文章,另外 ACE 中的 Stack Trace 功能就是基于 DBGENG 实现的;
有了 DbgHelp.dll 文件,即可使用里面的函数来输出程序的状态,这里我们要使用的就是 MiniDumpWriteDump 函数,该函数可以导出程序内部的内存、堆栈、句柄、线程、模块等程序运行相关的信息,该函数的原型如下(具体细节参考 DbgHelp.h ):
BOOL&WINAPI
MiniDumpWriteDump(
&&&&IN&HANDLE&hProcess,
&&&&IN&DWORD&ProcessId,
&&&&IN&HANDLE&hFile,
&&&&IN&MINIDUMP_TYPE&DumpType,
&&&&IN&CONST&PMINIDUMP_EXCEPTION_INFORMATION&ExceptionParam,&OPTIONAL
&&&&IN&CONST&PMINIDUMP_USER_STREAM_INFORMATION&UserStreamParam,&OPTIONAL
&&&&IN&CONST&PMINIDUMP_CALLBACK_INFORMATION&CallbackParam&OPTIONAL
因为程序运行时内存占用一般不会太小,尤其是大型程序动态申请的内存都有数百兆甚至更大,比如GIS程序一般都会占用将近 1GB 的内存,如果将内存全部记录下来,即使用户的磁盘空间够用,也不好从用户处发送回程序员处进行错误定义和分析,因此一般都是导出模块、线程和堆栈信息,这些信息通过详细的分析基本上可以定位绝大部分程序崩溃的原因,进而指引对程序的改进,所以 DumpType 参数指定为 MiniDumpNormal,这也是微软错误输出文件的设定值;
下面我们就要实现对程序崩溃的拦截,程序崩溃时Windows系统调用会发出异常通知,我们捕获该异常通知,然后使用上面的函数输出错误信息到指定的文件中,因为该套错误输出程序已经在公司的产品中运行了将近三年,考虑到软件的版权问题,下面我仅仅贴出最初实现的精简版的异常捕获代码:&
#pragma&once
//&异常处理函数句柄,该句柄根据情况返回对应的执行标志
LONG&WINAPI&ExceptionHandler(LPEXCEPTION_POINTERS&lpExceptionInfo);
LONG&WINAPI&ExceptionInstall();
#define&EXCEPTION_PROTECTED_BEGIN()&_try&{
#define&EXCEPTION_PROTECTED_CATCH()&}&__except(ExceptionHandler(GetExceptionInformation()))&{}
#include&&StdAfx.h&
#include&&time.h&
#include&&DbgHelp.h&
#include&&CrashOutput.h&
#pragma&comment(lib,&&shlwapi&)
#pragma&comment(lib,&&dbghelp&)
//==============================================================================
//&&&&定义常用的宏
#define&ERR_FAILURE&0xFFFFFFFF
#define&ERR_SUCCESS&0x
//==============================================================================
//&&&&定义默认的输出文件名称
static&const&TCHAR&szMiniDump[]&=&{&TEXT(&Crash.DMP&)&};
static&const&long&scnReseve&=&1024;
//==============================================================================
//&根据输入的标志、文件打开一个输出文件并返回句柄
HANDLE&WINAPI&GetDumpFile(LPCTSTR&lpszTag,&LPCTSTR&lpszFile,&DWORD&dwAccess)
&&&&TCHAR&szModule[MAX_PATH]&=&{&TEXT(&&)&};
&&&&GetModuleFileName(NULL,szModule,MAX_PATH);
&&&&LPTSTR&lpszPath&=&PathFindExtension(szModule);
&&&&wsprintf(lpszPath,&TEXT(&&%s&%s&),&lpszTag,&lpszFile);
&&&&DWORD&dwAttr&=&FILE_ATTRIBUTE_NORMAL&|&FILE_FLAG_WRITE_THROUGH;
&&&&return&CreateFile(szModule,dwAccess,0,0,CREATE_ALWAYS,dwAttr,0);
LONG&WINAPI&DumpMini(HANDLE&hFile,&PEXCEPTION_POINTERS&ExceptionInfo)
&&&&//&设置输出信息
&&&&MINIDUMP_EXCEPTION_INFORMATION&eI
&&&&eInfo.ThreadId&=&GetCurrentThreadId();
&&&&eInfo.ExceptionPointers&=&ExceptionI
&&&&eInfo.ClientPointers&=&FALSE;
&&&&//&准备进程相关参数
&&&&HANDLE&hProc&=&GetCurrentProcess();
&&&&DWORD&nProc&=&GetCurrentProcessId();
&&&&PMINIDUMP_EXCEPTION_INFORMATION&pMDI&=&ExceptionInfo&?&&eInfo&:&NULL;
&&&&BOOL&bDump&=&MiniDumpWriteDump(hProc,nProc,hFile,MiniDumpNormal,pMDI,NULL,NULL);
&&&&return&bDump&?&ERR_SUCCESS&:&ERR_FAILURE&;
//==================================================================================================
//&下面的函数为内部一级的函数,提供给外部接口调用
LONG&WINAPI&KeGenerateUniversalSymbol(LPTSTR&lpszTag,&UINT&nCount)
&&&&SYSTEMTIME&&GetLocalTime(&st);&
&&&&DWORD&nThread&=&GetCurrentThreadId();
&&&&DWORD&nProcess&=&GetCurrentProcessId();
&&&&DWORD&tClock&=&(DWORD)time(NULL);&srand(&GetTickCount()&);
&&&&DWORD&nTime&=&st.wHour&*&10000&+&st.wMinute&*&100&+&st.wS
&&&&DWORD&nDate&=&(st.wYear&%&100)&*&10000&+&st.wMonth&*&100&+&st.wD
&&&&static&const&TCHAR&szFormat[]&=&{&TEXT(&{%08X-%04X-%04X-%04X-%06d%06d}&)&};
&&&&return&wsprintf(lpszTag,&szFormat,&tClock,&nProcess,&nThread,&rand(),&nDate,&nTime);
LONG&WINAPI&KeDumpDebugger(LPTSTR&lpszTag,&PEXCEPTION_POINTERS&ExceptionInfo)
&&&&HANDLE&hFile&=&GetDumpFile(lpszTag,&szMiniDump,&GENERIC_WRITE);
&&&&if(hFile&==&INVALID_HANDLE_VALUE)&return&0;
&&&&DumpMini(&hFile,&ExceptionInfo&);
&&&&CloseHandle(&hFile&);
&&&&return&NO_ERROR;
LONG&WINAPI&KeExceptionHandler(LPCTSTR&lpszTag&/*&!=&NULL&*/)
&&&&static&const&TCHAR&scszWinCrash[]&=&{&TEXT(&WinCrash.exe&)&};
&&&&static&const&long&scnBuffer&=&scnReseve&*&2;
&&&&TCHAR&szCommand[scnBuffer]&=&{&TEXT(&&)&};
&&&&lstrcpy(szCommand,scszWinCrash);
&&&&lstrcat(szCommand,TEXT(&&\&&));
&&&&//&加入模块名称作为第一个参数
&&&&LPTSTR&lpCommand&=&szCommand&+&lstrlen(szCommand);
&&&&UINT&nLength&=&scnBuffer&+&szCommand&-&lpC
&&&&GetModuleFileName(NULL,lpCommand,nLength);
&&&&lstrcat(lpCommand,TEXT(&\&&));
&&&&if(lpszTag&!=&NULL)
&&&&&&&&//&如果输入了标识,那么作为第二个参数
&&&&&&&&lpCommand&=&lpCommand&+&lstrlen(lpCommand);
&&&&&&&&wsprintf(lpCommand,&TEXT(&&\&/TAG:%s\&&),&lpszTag);
&&&&STARTUPINFO&startI
&&&&PROCESS_INFORMATION&procI
&&&&ZeroMemory(&procInfo,&sizeof(procInfo));
&&&&ZeroMemory(&startInfo,&sizeof(startInfo));
&&&&startInfo.cb&=&sizeof(startInfo);
&&&&startInfo.dwFlags&=&STARTF_USESHOWWINDOW;
&&&&startInfo.wShowWindow&=&SW_SHOW;
&&&&BOOL&bCreate&=&CreateProcess(0,szCommand,0,0,0,0,0,0,&startInfo,&procInfo);
&&&&if(&bCreate&&&&procInfo.hProcess&&&&procInfo.hThread&)
&&&&&&&&CloseHandle(procInfo.hThread);
&&&&&&&&CloseHandle(procInfo.hProcess);
&&&&&&&&return&EXCEPTION_EXECUTE_HANDLER;
&&&&return&EXCEPTION_CONTINUE_SEARCH;
//==================================================================================================
//&该函数为真正的异常过滤器函数,如果使用全局未处理异常句柄,那么就是该函数
LONG&WINAPI&ExceptionFilter(LPEXCEPTION_POINTERS&ExceptionInfo)
&&&&//&进程已经处于崩溃时错误信息输出中
&&&&TCHAR&szTag[64]&=&{&TEXT(&&)&};
&&&&KeGenerateUniversalSymbol(szTag,&64);
&&&&KeDumpDebugger(szTag,&ExceptionInfo);
&&&&return&KeExceptionHandler(szTag);
LONG&WINAPI&ExceptionHandler(LPEXCEPTION_POINTERS&lpExceptionInfo)
&&&&//&如果是在调试器下执行的,那么直接返回给调试器
&&&&if(IsDebuggerPresent())&
&&&&&&&&return&EXCEPTION_CONTINUE_SEARCH;
&&&&//&进行异常捕获并分析情况返回异常处理值
&&&&return&ExceptionFilter(lpExceptionInfo);
LONG&WINAPI&ExceptionInstall()
&&&&SetUnhandledExceptionFilter(ExceptionFilter);
&&&&return&HRESULT_FROM_WIN32(ERROR_SUCCESS);
static&LONG&snInstall&=&ExceptionInstall();
编译程序时将该CPP文件添加到主程序中即可,然后就是实现一个 WinCrash.exe 程序,该程序根据输入的参数找到对应程序的错误输出然后根据用户的选择将错误输出打包并发送到指定的邮箱中;
如果程序比较复杂,有较多的可执行模块构成,比如近百的动态库和较多的辅助工具,并且源代码是一个较大的团队在开发维护,那么就需要很多人来对自己相关的错误进行分析定位和改进程序代码,这样就带来了一个问题,如果搭建一个符号服务器给所有人使用而不是只能在特定的计算机上使用?
欲知如何处理请参阅《》
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:127997次
积分:2420
积分:2420
排名:第8183名
原创:85篇
转载:162篇
评论:13条
(1)(14)(19)(13)(6)(1)(4)(22)(13)(1)(9)(2)(1)(4)(3)(3)(15)(3)(1)(6)(7)(1)(2)(4)(1)(1)(13)(11)(12)(6)(10)(1)(3)(1)(2)(6)(13)(5)(7)使用dump文件分析系统蓝屏原因_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
使用dump文件分析系统蓝屏原因
使​用​d​u​m​p​文​件​分​析​系​统​蓝​屏​原​因
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩13页未读,继续阅读
你可能喜欢

我要回帖

更多关于 windebug symbol 的文章

 

随机推荐