1. <ul id="thFHg"></ul>

        您的位置:飞度下载站下载编程开发编程工具windbg下载 v6.12 官方最新版

        windbg下载 v6.12 官方最新版windbg下载 v6.12 官方最新版

        软件大小:34.5M

        软件官网:HomePage

        用户评分:

        软件类型:国产软件

        运行环境:Win All

        软件语言:简体中文

        软件分类:编程工具

        更新时间:2019/11/19

        授权方式:免费软件

        插件情况:无 插 件

        平台检测 无插件 360通过 腾讯通过 金山通过 瑞星通过
        编程工具
        windbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。它能够通过dmp文件轻松的定位到问题根源,可用于分析蓝屏、程序崩溃(IE崩溃)原因,是我们日常工作中必不可少的一个有力工具,学会使用它,将有效提升我们的问题解决效率和准确率。
        windbg

        【基本介绍】

        配置WinDbg
        运行WinDbg->菜单->File->Symbol File Path->按照下面的方法设置_NT_SYMBOL_PATH变量
        在弹出的框中输入“C:\MyCodesSymbols; SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols”(按照这样设置,WinDbg将先从本地文件夹C:\MyCodesSymbols中查找Symbol,如果找不到,则自动从MS的Symbol Server上下载Symbols)。另一种做法是从这个Symbol下载地址中http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx,下载相应操作系统所需要的完整的Symbol安装包,并进行安装,例如我将其安装在D:\WINDOWS\Symbols,在该框中输入“D:\WINDOWS\Symbols”。(这里要注意下载的Symbols的版本一定要正确,在我的Win2003+Sp1上,我曾经以为安装Win2003+Sp2的Symbols可能会!恋,但结果证明我错了,用WinDbg打开可执行文件时,提示“PDB symbol for mscorwks.dll not loaded;Defaulted to export symbols for ntdll.dll”的错误,我有重新装上Win2003+Sp1的Symbols, 现在一切运行正常^_^)

        【调试准备】

        为了测试 WinDbg 中使用 SOS 扩展命令,我创建了应用程序 "MemoryLeakApp.exe",Visual Studio 程序选择为 64 位环境编译。


        "MemoryLeakApp.exe" 启动运行后可能占用内存600M。


        此时,选择使用 64 位 WinDbg 来调试程序。我们先通过 Attach Process 方式来调试。



        当然,如果我们使用了 32 位的 WinDbg 去 Attach 进程,会直接报错。

        【WinDbg常用命令手册】

        内置帮助命令
        ?

        ?   显示常规命令
        ? /D    通过 DML(Debugging Markup Language) 方式显示常规命令

        .help
        .help    显示 . 系列命令
        .help /D 通过 DML 方式显示 . 系列命令
        .help /D a* 通过 DML 方式显示所有以 'a' 字母开头的 . 系列命令


        .chain
        .chain 列出所有已加载的调试器扩展
        .chain /D 通过 DML 方式列出所有已加载的调试器扩展


        .extmatch
        .extmatch /e ExtDLL FunctionFilter 显示调试器扩展的所有导出函数
        .extmatch /D /e ExtDLL FunctionFilter 通过 DML 方式显示调试器扩展所有导出函数
        .extmatch /D /e uext * 显示 uext 扩展中的所有导出函数


        .hh
        .hh 打开 WinDbg 的帮助文件
        .hh Text 打开 WinDbg 的帮助文件,并自动搜索 Text 的内容
        .hh dt 在 WinDbg 帮助文件中搜索 dt 命令

        调试会话命令
        .attach

        .attach PID 附加到指定ID的进程

        .detach
        .detach 结束调试会话,被调试进程仍可继续运行


        q
        q 结束调试会话,同时终止被调试进程的进行
        qq 结束调试会话,同时终止被调试进程的进行

        .restart
        .restart 重启被调试应用

        一般信息命令
        version

        显示调试器版本信息和已加载的调试器扩展


        vercommand
        显示调试器启动文件的路径


        vertarget
        显示目标机器的版本


        CTRL+ALT+V
        打开或关闭 Verbose 模式开关,某些命令在此模式下可以给出更多详细信息

        .formats
        .formats Expression 显示数字的各种格式信息
        .formats 5


        .cls
        清理屏幕
        .last event显示最新的异常信息或事件信息

        .effmach
        .effmach 显示有效作用的机器信息
        .effmach .
        .effmach #
        .effmach x86 | amd64 | ia64 | ebc

        .time
        显示系统记录的各种时间


        .echo
        .echo String 输出字符串
        .echo "String"
        .echo "Hello World"

        符号加载命令
        ld

        ld ModuleName 加载指定模块的符号
        ld * 加载所有模块的符号


        !sym
        !sym 获取符号加载状态
        !sym noisy 让调试器显示符号搜索详细信息
        !sym quiet 默认项,不显示符号搜索信息


        .sympath
        .sympath 显示和设置符号搜索路径
        .sympath+ 增加符号搜索路径
        .sympath+ C:\Symbols

        .symopt
        .symopt 显示当前符号可选项
        .symopt+ Flags 添加符号可选项
        .symopt- Flags 移除符号可选项

        .symfix
        .symfix 设置符号库路径
        .sym+ DownstreamStore 添加符号库路径

        x
        x [Options] Module!Symbol 模式匹配符号信息
        x /t .. 根据数据类型匹配
        x /v .. 显示详细信息
        x /a .. 按照地址排序
        x /n .. 按照名称排序
        x /z .. 按照大小排序
        x *! 列出所有模块

        x ntdll!* 列出 ntdll 模块

        x /t /v ntdll!* 列出 ntdll 模块数据类型和符号类型


        .reload
        .reload 重新加载符号信息
        .reload [/f | /v] /f 强制立即加载符号 /v 显示详细信息
        .reload [/f | /v] Module Module 为指定模块加载符号信息
        .reload /f @"ntdll.dll"
        .reload /f @"C:\WINNT\System32\verifier.dll"

        模块加载命令

        lm

        lm[ v | l | k | u | f ] [m Pattern] 显示已加载的模块
        lm 显示所有加载和未加载的模块信息

        lmv 显示已加载模块的详细信息
        lml 同时显示加载的符号信息
        lmk 显示内核模块信息
        lmu 显示用户模块信息
        lmf 显示镜像路径
        lmm 匹配模块名称
        lmD 使用 DML 方式显示

        lmv m kernel32 显示 kernel32 模块详细信息


        !dlls
        !dlls 列出所有加载的模块和加载数量
        !dlls -i 根据初始化顺序
        !dlls -l 根据加载顺序(默认项)
        !dlls -m 根据内存顺序
        !dlls -v 显示更多详细信息
        !dlls -c ModuleAddr 仅显示 ModuleAddr 地址的模块信息
        !dlls -? 显示帮助
        !dlls -v -c kernel32 显示 kernel32.dll 的信息

        !lmi

        !lmi Module 显示模块的详细信息,包括加载符号信息
        !lmi kernel32 显示 kernel32.dll 模块的信息


        异常分析命令
        !analyze

        !analyze -v 显示当前异常的详细信息
        !analyze -hang 诊断线程调用栈上是否有任何线程阻塞了其他线程
        !analyze -f 查看异常分析信息,尽管调试器并未诊断出异常


        进程信息命令
        !dml_proc

        通过 DML 方式显示当前进程的信息


        .tlist
        显示当前所有进程


        线程信息命令
        ~
        ~ 显示线程信息

        ~* [Command] 所有线程

        ~. [Command] 当前线程

        ~# [Command] 引发当前事件或异常的线程
        ~Number [Command] 显示指定序号的线程
        ~~[TID] [Command] 显示指定线程ID的线程
        ~Ns 切换到线程 N
        ~* k 显示所有线程的调用栈
        ~2 f 冻结2号线程
        ~# f 冻结引发异常的线程
        ~3 u 解除对3号线程的冻结
        ~2 k 显示2号线程的调用栈


        ~e
        ~* e CommandString 在所有线程上执行命令
        ~. e CommandString 在当前线程上执行命令
        ~# e CommandString 在引发异常的线程上执行命令
        ~Number e CommandString 在指定序号的线程上执行命令
        ~2e r; k; kd 相当于 ~2r; ~2k; ~2kd
        ~*e !gle 显示所有线程的最后一个错误信息


        ~f
        ~Thread f 冻结线程

        ~u
        ~Thread u 解除冻结线程

        ~n
        ~Thread n 挂起线程,增加线程挂起数量

        ~m
        ~Thread m 恢复线程,减少线程挂起数量

        !teb
        显示线程环境信息


        !tls
        !tls -1 -1 为显示当前线程所有的 slot 信息
        !tls SlotIdx 显示指定的 slot 信息
        !tls [-1 | SlotIdx] TebAddr


        .ttime
        显示线程时间信息


        !runaway
        [Flags: 0 | 1 | 2] 显示每个线程消耗的时间,用于快速的查找 CPU 时间消耗最多的线程
        0 用户态时间
        1 内核态时间
        2 自线程创建起的时间间隔


        !gle
        !gle 显示当前线程的最后错误
        !gle -all 显示所有线程的最后错误

        !error
        !error ErrValue 解析错误信息
        !error ErrValue 1 将错误值作为 NTSTATUS 代码

        堆栈信息命令
        k

        k [n] [f] [L] [#Frames] 显示调用栈信息
        kn 调用栈包含帧号
        kf 临近帧的距离
        kL 忽略源代码
        kb ... 最开始的 3 参数
        kp ... 所有的参数,包括参数类型、名称和值
        kP ... 所有的参数
        kv ... FPO信息
        kb 5 显示最开始的 5 个帧


        kd
        kd [WordCnt] 显示原始栈数据和可能的符号信息

        kM
        使用 DML 格式显示堆栈信息

        .kframes
        设置栈长度,默认是20(0x14)

        .frame

        .frame 显示当前帧
        .frame # 指定帧号
        .frame /r [#] 显示寄存器信息
        .frame 2 显示帧号 2 的信息
        .frame /r 0d 显示 0 帧中寄存器信息


        !uniqstack
        !uniqstack 显示所有线程的栈信息
        !uniqstack [b|v|p] [n] b=前3个参数;v=FPO信息;p=所有参数;n=帧号
        !uniqstack -? 显示帮助


        !findstack
        !findstack Symbol 找到包含符号或模块的栈
        !findstack Symbol [0|1|2] 0=仅显示线程ID;1=线程ID和帧;2=全部的线程栈;
        !findstack -? 显示帮助
        !findstack clr 2 显示包含 clr 的所有栈的信息


        扩展帮助命令
        !Ext.help
        常规扩展命令帮助


        !Exts.help



        !Uext.help
        用户态模式扩展命令帮助


        !Ntsdexts.help
        用户态扩展命令帮助(OS相关)


        !logexts.help
        日志相关扩展


        !clr10\sos.help
        调试托管代码

        !wow64exts.help
        wow64调试器扩展

        !Wdfkd.help
        内核态驱动框架扩展

        !Gdikdx.help
        图形驱动扩展

        !NAME.help
        显示任何 NAME 名称的扩展命令的帮助

        日志扩展命令

        !logexts.help

        显示所有日志扩展命令

        !loge
        !loge [dir] 打开日志功能,可选配置输出目录

        !logi
        初始化日志功能

        !logd
        关闭日志功能

        !logo
        !logo 列出日志配置信息
        !logo [e|d] [d|t|v] 打开或关闭日志,d=调试器,t=文本文件,v=详细信息

        !logc
        !logc 列出所有日志类型
        !logc p # 列出 # 中的日志类型
        !logc [e|d] * 打开或关闭所有日志类型
        !logc [e|d] # [#] [#] 打开或关闭日志类型 #

        !logb
        !logb p 打印缓冲区信息至调试器
        !logb f 刷新缓冲区内容之日志文件

        !logm
        !logm 显示模块的包含或屏蔽列表
        !logm [i|x] [DLL] [DLL] 指定模块的包含或屏蔽列表

        【使用教程】 

        Symbol设定
        连基本的 Symbol 都没有设定, 要怎麽玩 Kernel 呀?
        接下来我会 step by step 解说 Symbol 的设定方法
        首先这里假设你已经把 WinDBG 安装好了
        一. 启动 WinDBG 後, 你会在下面命令列看到 Debuggee not connected
        好~, 开始建立连结 [File] -> [Kernel Debug] , 之後会出现对话盒
        对话盒里面有个 Tab Control, 点选 Local 页签, 然後按 [确定]
        假如你是第一次启动, 可能会出现一个对话盒, 会问你要不要储存 workspace,
        按 [Yes], 这样就完成建立了一个 Debuggee 的连结
        这时你可以输入 version, 看一下系统的相关资讯和 Debugger 的版本
        二. 接下来要搞定 SymBol 设定, 这部分很重要, 你一定要了解
        从 [File] -> [Symbol File Path], 或者按 Ctrl + S,
        之後会出现一个以 Symbol Search Path 为 Title 的对话盒, 开始设定 SymBol 路径
        输入 C:\Windows\Symbols;SRV*C:\Windows\Symbols*http://msdl.microsoft.com/download/symbols
        然後按 [确定]
        我先解说这个输入的用意, 它分成两部分
        一个是 C:\Windows\Symbols
        另一个是 SRV*C:\Windows\Symbols*http://msdl.microsoft.com/download/symbols
        两个以分号 ";" 隔开的
        其用意就是告诉 WinDBG 如果你在 C:\Windows\Symbols 这个目录下找不到 Symbol,
        那麽就到 http://msdl.microsoft.com/download/symbols 这网址去找,
        并且把找到的 Symbol File 下载到 C:\Windows\Symbols 目录底下 (SRV*C:\Windows\Symbols*)
        这样就完成了 Symbol File Path 的设定了
        有时候会有很多其它状况, 例如 WinDBG 会说找不到呀,
        解决方法就是 reload (Reload Module)
        在 Symbol File Path 的设定对话盒下面有个 reload 的 CheckBox,
        把它打勾, 然後按 [确定], 让它自动重新载入
        另外, 你也可以使用内建指令 .reload , 快速的 Reload Module
        三. 教你如何一次性的完整下载所有 Symbol Files
        平常我们都只是在查看 Ntdll 的函数, 或者查看 Service Descriptor Table
        这样 WinDBG 只会下载 ntdll.pdb 和 ntkrnlmp.pdb 或者 win32k.pdb 到 C:\Windows\Symbol
        但其它的呢, 万一哪天要用到而 Micro$oft 又停止支援怎办, 嗯~把它一次通通下载到 C:\Windows\Symbol 好了
        启动 DOS Command Line, 也就是 cmd.exe
        [开始] -> [执行] -> 输入 cmd -> 按 [确定] , 会出现 DOS 的 Command Line 视窗
        先跳进 WinDBG 安装目录
        在 DOS 视窗输入 cd C:\Program Files\Debugging Tools for Windows (x86), 按 [Enter]
        然後再输入
        symchk.exe /r C:\Windows\system32 /s SRV*C:\Windows\Symbols*http://msdl.microsoft.com/download/symbols
        按 [Enter] 後它就开始自动扫描和下载 C:\Windows\system32 目录下的档案的 Symbol File 到 C:\Windows\Symbols
        当然你也可以扫描和下载其他目录下系统档案的 Symbol Files
        例如扫描 .Net 的档案, 在 DOS 的Command Line 视窗输入
        symchk.exe /r C:\WINDOWS\Microsoft.NET\Framework /s SRV*C:\Windows\Symbols*http://msdl.microsoft.com/download/symbols
        但不建议放在同一个目录, 建议改放到 C:\Windows\NetSymbols
        指令就变成
        symchk.exe /r C:\WINDOWS\Microsoft.NET\Framework /s SRV*C:\Windows\NetSymbols*http://msdl.microsoft.com/download/symbols

        WinDBG使用方法入门

        首先在本页下载该软件并且安装
        安装成功后,可以我开始菜单,程序中找到并启动Windbg。

        启动后主界面如图。

        我们可以选择文件(File)菜单》附加到一个进程。

        在打开的列表中选择你要调试的进程。

        有的进程可能权限比较高,无法调试。

        我们使用管理员身份运行Windbg。

        再选择进程,附加进程。

        还是报错,这说明此程序有自我;せ,无法进行调试。

        如果程序没有自我;,附加后会显示如图所示。

        大家都喜欢

        • 电脑软件
        • 手机软件
        更多>

        用户评论

        (您的评论需要经过审核才能显示)0人参与,0条评论
        140

        最新评论

        还没有评论,快来抢沙发吧!

        请简要描述您遇到的错误,我们将尽快予以修订

        返回顶部