• windbg工具安装配置及dump抓取


    安装与配置windbg

    安装与配置windbg的symbol(符号)

    第一步 下载WinDBG,
    第二步 双击下载的文件安装windbg.安装时注意记住安装到那里了.
    第三步 windbg访问符号需要两个文件(SYMSRV.DLL 和 SYMSTORE.EXE)所以在环境变量path中将windbg安装目录添加进去,这一步是告诉windbg那两个文件放在什么地方.
    第四步 新建一个环境变量_NT_SYMBOL_PATH 值为: SRV*c:mysymbol* http://msdl.microsoft.com/download/symbols

    还有一种方法新的方法是:设置值为 cache*c:mysymbol;srv*http://msdl.microsoft.com/download/symbols

    这两个的不同点在于 第一个只能缓存符号服务器形式的符号文件,但是第二种可以缓存远程共享形式的符号文件。.这一步的意思是说告诉windbg,我的符号文件存放在c:mysymbol中
    第五步 重启计算机,再运行运行windbg 打开一个exe文件或者附加到一个进程里去, 你会看到
    Symbol search path is: SRV*c:mysymbol* http://msdl.microsoft.com/download/symbols
    打开c盘看到有一个新目录mysymbol,里面有windbg新下载的文件,说明配置成功了.

    加载sos和clr

    问题一:WinDBG分X86和X64两个版本

      如果你用的是32位的WinDBG,那直接打开就行;你如果用的是64位的版本,那么如果调试64位代码也直接打开,如果调试x86的代码,要使用Wow64下的WinDBG.exe。

    问题二:确定SOS和CLR的位置和版本

      如果安装了Visual Studio的机器,可以打开VS的命令行,输入where sos.dll命令,可以找到sos.dll的全路径(需要说明的是,找到的不一定是全部的文件)。它的一般位置在C:WindowsMicrosoft.NETFramework?version?SOS.dll。其中Framework?包括Framework和Framework64两个版本;version?包括v2.0.50727,v3.0,v3.5和v4.0.30319等版本。文件确切路径的选择依据要调试程序的版本而定,一般为C:WindowsMicrosoft.NETFrameworkv4.0.30319SOS.dll,CLR为同一目录下的CLR.dll文件。

    问题三:加载SOS和CLR

      运气好的话,使用命令.load C:WindowsMicrosoft.NETFrameworkv4.0.30319SOS.dll可以加载成功。如果失败,特别是出现The call to LoadLibrary(C:WindowsMicrosoft.NETFrameworkv4.0.30319sos.dll) failed, Win32 error 0n193这样的错误,请确认加载sos.dll的版本是否正确。

      此外,加载不出错,并不见得可以直接使用。可以尝试命令.loadby sos clr。如果命令成功,那么测试环境好了。如果出现了“Unable to find module 'clr'”这样的错误。请键入g让调试程序运行一会儿,停下来的时候再尝试命令.loadby sos clr,这时一般都会成功。

    获取dump

    方法1:任务管理器,生成转储文件

    win2008 以上版本,在任务管理器中,切换到"进程"选项卡,右键点击想要创建dump文件的进程,然后选择"Create Dump File(生成转储文件)"即可。

    方法2:adplus

    命令窗口,c:路径adplus -hang -pn w3wp.exe -o c:dumps

    -hang: 表示附加到目标进程,抓取 dump 镜像,然后解除。对应的参数是 -crash 崩溃模式,该参数会终止目标进程;

    -o: 指定 Dump 文件保存路径

    方法2:attach到进程

    1) 打开WinDBG并将之Attach 到crash的程序进程

    2) 输入产生dump 文件的命令

    WinDBG产生dump 文件的命令是 .dump ,可以选择不同的参数来生成不同类型的dump文件。

    选项(1): /m

    命令行示例:.dump /m C:dumpsmyapp.dmp

    注解: 缺省选项,生成标准的minidump, 转储文件通常较小,便于在网络上通过邮件或其他方式传输。 这种文件的信息量较少,只包含系统信息、加载的模块(DLL)信息、 进程信息和线程信息。

    选项(2): /ma

    命令行示例:.dump /ma C:dumpsmyapp.dmp

    注解: 带有尽量多选项的minidump(包括完整的内存内容、句柄、未加载的模块,等等),文件很大,但如果条件允许(本机调试,局域网环境), 推荐使用这中dump。

    选项(3):/mFhutwd

    命令行示例:.dump /mFhutwd C:dumpsmyapp.dmp

    注解:带有数据段、非共享的读/写内存页和其他有用的信息的minidump。包含了通过minidump能够得到的最多的信息。是一种折中方案。

  • 相关阅读:
    VisualVM 分析full GC问题记录
    HTTPS协议、TLS协议、证书认证过程解析
    java.lang基础数据类型boolean、char、byte、short、int、long、float、double (JDK1.8)
    java.lang.StringBuilder和java.lang.StringBuffer (JDK1.8)
    MVC中自带的异步((Ajax.BeginForm)无效
    百度富文本编辑器UEDITOR
    只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 // 节中包括 System.Web.SessionSta
    【知识碎片】CSS 篇
    js 将json字符串转换为json对象的方法解析
    【知识碎片】Asp.Net 篇
  • 原文地址:https://www.cnblogs.com/Invokerr/p/6839949.html
Copyright © 2020-2023  润新知