windbg 常用命令
Windows调试工具入门-6(WinDbg内核调试常用命令2)

WinDbg内核调试常用命令(2)接上一章继续介绍内核调试下的常用命令,这一章主要涉及内存相关、对象相关、驱动设备相关以及蓝屏Dump 相关命令。
介绍每个命令的主要作用,以及常用方式,不会涉及详细的命令参数,目的是能快速上手熟悉内核调试下的常用操作,而不是替代帮助文件。
内存相关内存操作应该是调试最常用的,比如查看内存、修改内存等。
本节介绍内核模式下常用的内存操作命令,大部分是内核模式下特有的命令,诸如db/eb/dt/s等基本内存命令则不会介绍。
!address!address命令显示内存信息,如内存范围、内存权限等。
这条命令在用户模式下也能用,而且显示的信息比较丰富。
!address命令不带参数时,显示所有内存信息。
kd>!address80800000-0026b000Usage KernelSpaceUsageImageImageName ntoskrnl.exe80a6b000-0001f000Usage KernelSpaceUsageImageImageName halacpi.dll......f51d9000-00005000Usage KernelSpaceUsageKernelStackKernelStack81827020:340.7ac......f894f000-00002000Usage KernelSpaceUsageImageImageName swenum.sysf8951000-00256000Usage KernelSpaceUsageNonPagedSystemf8ba8000-07038000Usage KernelSpaceUsageNonPagedPoolExpansionUsage表示内存用途,如内核映像、非分页内存、内核栈、会话空间等。
通过Usage就能大概了解某段内存的使用情况,也为进一步分析内存指明了方向。
!address xxxxxxxx显示指定地址的内存信息。
windbg常用命令列表

bp KERNELBASE!CreateFileW+0x5"dU /c 50 poi(@ebp + r eax;if(@eax<0){.echo hit}.else{gc}" 软件断点
bp KERNELBASE!CreateFileW+0x5"dU /c 50 poi(@ebp+ bp `d4dtest!d4dtestdlg.cpp:196` ba w4 0006fc74 bm /a nt!Dbgk*
bl g gu $$ 返回到父函数 p p "dv" $$单步后自动执行dv命令 pc $$单步到下一条call指令 t tc $$跟踪到下一条call指令 tb $$跟踪到下一条分支指令 wt - 13 u nt!PsGetCurrentProcessId uf RtlLeaveCriticalSection ub 773c78e9 a<地址> !locks !cs -1 !alpc /m 9322a230 dt _RTL_CRITICAL_SECTION dt _ERESOURCE dt _KEVENT -r !pcr dg @fs !idt -a !cpuid !cpuinfo !irpl dt -KPCR !drvobj ser2pl !devobj 85163500 !devstack 85163500 !devnode 0 1 !irp 85163e70 dt _IO_STACK_LOCATION 85879d60 dt _IRP dt _DRIVER_OBJECT dt _DEVICE_OBJECT !arbiter 2 $$物理地址的分配情况 !pci ff 0 2 0 0 ff !pcitree ib 510 ob 510 0a !amli dns /s \_sb_.pci0.bat0 !loadby sos mscorwks .load clr10\sos.dll !name2ee clihello CliHello.CliHello.Main !ip2md 0x7ff 001c0dbd
Windbg使用简明指南

Windbg 使用简明指南2014/2/26 19:55:45第一章1.1. 环境配置准备_NT_DEBUGGER_EXTENSION_PATH=C:\WINDOWS\\Frame work\v2.0.50727 _NT_SYMBOL_PATH=SRV*c:\Symbols*/download/s ymbolsPath add: C:\WINDOWS\\Framework\v2.0.50727 C:\Program Files\Debugging Tools for Windows (x86)1.2 .Net CLR 知识第二章序号 命令 1. .chain 1. 解释常用命令显示有哪些调试扩展。
.load DLLName 加载调试扩展。
DLLName 要是全路径名,包括”.dll” !DLLName.load 1. .loadby DLLNam 加载调试扩展。
DLLName 是短文件名,不包括”.dll”。
e ModuleName ModuleName 是调试进程中的模块名,表示通过它所在的 路径查找 DLLName。
1. .unload DLLNam 卸载调试扩展。
e !DLLName.unloa d 1. .setdll DLLNam 设置缺省的调试扩展。
e !DLLName.setdl l 1. ![ext.]address 显示 VM 的分配状况 1. ![sos.]vmmap 1. ![uext.]vadump 输出虚拟地址映射信息 1. ![uext.]vprot 显示给出的虚拟地址所在内存的映射信息。
address 1. .logfle 1. .logopen .logappend 1. .logclose 1. dt 1. ![ntsdexts.]he 察看 Win32 堆的运行状况。
ap 0 0 1. ![ext.]dlls 1. ![sos.]threads 可以列出所有的托管线程,并在栈顶给出异常对象的地 址。
windbg 函数引用 指令

windbg 函数引用指令
Windbg是一款功能强大的Windows调试器工具,它可以用于分
析Windows操作系统和应用程序的崩溃、性能问题和其他调试需求。
在Windbg中,函数引用和指令是调试过程中经常用到的重要概念。
函数引用指的是在程序中调用其他函数的地方。
在Windbg中,
我们可以使用命令`x`来查看内存中的函数引用。
例如,使用`x module!function`可以查看特定模块中对函数的引用。
这对于分析
程序的调用关系和调试函数调用问题非常有帮助。
指令则是程序中的计算机指令,它们是程序的基本构成单元。
在Windbg中,我们可以使用`u`命令来反汇编指定地址处的指令,
以便分析程序的执行流程和代码逻辑。
另外,使用`t`命令可以单步
执行程序,并查看每条指令的执行情况。
除了以上提到的命令,Windbg还提供了丰富的调试命令和扩展,可以帮助我们深入分析程序的运行情况和解决各种调试问题。
在使
用Windbg进行函数引用和指令级别的调试时,我们需要结合程序的
符号信息和源代码,以便更好地理解程序的行为和排查问题。
总之,Windbg在函数引用和指令级别的调试方面提供了丰富的功能和命令,能够帮助开发人员深入分析程序的内部运行情况,解决各种复杂的调试问题。
通过结合实际的调试案例和丰富的调试经验,开发人员可以更好地利用Windbg进行函数引用和指令级别的调试工作。
WinDBG调试命令大全

WinDBG调试命令⼤全转载收藏于:#调试命令窗⼝+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#使⽤gflags.exe⼯具(在windbg所在⽬录下),让某个进程启动时,拉取windbg进⾏调试如下截图:当名称为captcomm.exe的进程启动时,拉起windbg调试也可通过脚本命令来实现:// 运⾏captcomm.exe时,启动windbg调试reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\captcomm.exe" /v Debugger /t REG_SZ /d "C:\Program Files\Debugging Tools for Windows (x86)\windbg.exe" /f// 解除启动时windbg调试reg delete"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\captcomm.exe" /f// 64位系统上,也可以设置以下注册表节点reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\captcomm.exe" /v Debugger /t REG_SZ /d "C:\Program Files\Debugging Tools for Windows (x86)\windbg.exe" /f// 解除启动时windbg调试reg delete"HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\captcomm.exe" /f// 测试发现:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options和HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Image File Execution Options指向的是同⼀数据,修改其中任何⼀安全软件可能会禁⽌修改注册表的Image File Execution项:-- 对于360安全卫⼠,在“设置”中去掉“开启360⾃我保护”的勾选来关闭-- 对于McAfee,需要禁⽌IPS(Intrusion Prevension Systems)。
windbg使用方法

windbg使用方法Windbg是一款由Microsoft开发的强大的调试工具,它可以帮助开发人员诊断和解决Windows平台上的各种软件问题。
本文将介绍Windbg的基本使用方法,希望能够帮助读者更好地利用这一工具进行调试和分析。
首先,我们需要下载并安装Windbg工具。
可以在Microsoft官方网站上找到Windbg的安装包,并按照提示进行安装。
安装完成后,我们可以在开始菜单或者桌面上找到Windbg的快捷方式,双击打开即可进入工具界面。
在使用Windbg进行调试之前,我们需要先了解一些基本概念和操作。
首先是符号文件的设置,符号文件包含了程序中各个函数和变量的调试信息,可以帮助我们更好地进行调试。
在Windbg中,可以通过设置符号路径和加载符号文件来进行符号文件的管理。
接着是源代码的设置,如果我们有程序的源代码,可以通过设置源代码路径来进行源代码级别的调试。
最后是调试目标的设置,可以通过Attach或者Open Crash Dump来加载需要调试的程序。
接下来,我们来看一下Windbg的一些常用命令和功能。
在Windbg的命令行窗口中,可以输入各种命令来进行调试操作,比如设置断点、查看变量的值、跟踪函数的调用等。
此外,Windbg还提供了丰富的图形化界面,可以通过菜单栏和工具栏来进行各种调试操作,比如查看内存、查看寄存器、查看线程信息等。
除了基本的调试功能,Windbg还提供了一些高级的调试工具和扩展,比如分析内存泄漏、分析崩溃转储、分析性能问题等。
通过这些工具和扩展,我们可以更深入地了解程序的运行情况,找出潜在的问题并加以解决。
在使用Windbg进行调试的过程中,我们可能会遇到各种各样的问题和挑战,比如调试信息不够详细、调试速度太慢、调试过程中出现崩溃等。
针对这些问题,我们可以通过调整符号文件的设置、优化调试环境、使用合适的调试工具等方式来进行解决。
总的来说,Windbg是一款功能强大的调试工具,可以帮助我们更好地进行程序调试和分析。
调试程序Windbg

调试程序WindbgWinDbg是微软开发的免费源码级图形界面调试工具,可以调试Win32应用程序,服务器应用程序调试和Kernel模式驱动调试。
本文介绍Windbg在调试Win32应用程序时的常用命令。
1、Windbg的启动Windbg可以从命令行启动,启动命令格式为:windbg [-a] [-g] [-h] [-i] [-k [platform port speed]] [-l[text]] [-m] [-p id [-e event]] [-s[pipe]] [-v] [-w name] [-y path][-z crashfile] [filename[.ext] [arguments]]在WindowsXP/2000操作系统下,可以直接双击Windbg图标启动。
2、打开应用程序被调试的应用程序在汇编和连接时应加入调试信息。
汇编时使用参数/Zi;连接程序使用参数/debug。
开始调试一个应用程序时,首先选择File菜单下的Open Executable命令,在对话框中选择可执行文件。
出现Command 窗口,点击工具栏按钮后,在Command 窗口中显示一组信息,再次点击按钮后,在Command 窗口后出现Source窗口。
3、显示存储单元显示存储单元的按钮是。
点击该按钮后,出现对话框在Address Expression编辑框中填入要察看的地址信息。
地址信息有两种常用的输入方式:(1)指定内存单元地址例如:在Address Expression 中填入0x0040103f,点击按钮OK后出现指定地址开始的内存单元的内容:其中0x0040103F至0x004010BF是Windbg显示以十六进制表示的单元地址,中间用十六进制表示每个字节,右边用ASClI字符表示每个字节。
(2)通过变量名表示例如:在Address Expression 中填入&b_var1,点击按钮OK后出现b_var1开始的内存单元的内容:其中0x00404000地址是变量b_var1所在的单元。
windbg的常用命令--强大常用

如何手工抓取dump文件在生产环境下进行故障诊断时,为了不终止正在运行的服务或应用程序,有两种方式可以对正在运行的服务或应用程序的进程进行分析和调试。
首先一种比较直观简洁的方式就是用Wi nDbg等调试器直接attac h到需要调试的进程,调试完毕之后再det ach即可。
但是这种方式有个缺点就是执行debug ger命令时必须先b reak这个进程,执行完deb ug命令之后又得赶紧F5让他继续运行,因为被你br eak住的时候意味着整个进程也已经被你挂起。
另外也经常会由于FirstChan ce Ex cetpi on而自动break,你得时刻留意避免长时间bre ak整个进程。
所以这样的调试方式对时间是个很大的考验,往往没有充裕的时间来做仔细分析。
另一种方式则是在出现问题的时候,比如CP U持续长时间100%,内存突然暴涨等非正常情况下,通过对服务进程sna pshot抓取一个d ump文件,完成du mp之后先deatc h,让进程继续运行。
然后用wi ndbg等工具来分析这个抓取到的dump文件。
那么如何在不终止进程的情况下抓取dump文件呢?D ebugg ing T oolsfor W indow s 里提供了一个非常好的工具,a dplus.vbs。
从名字可以看出,实际上是一个v b脚本,只是对cdb调试器作的一个包装脚本。
其路径与De buggi ng To ols f or Wi ndows的安装路径相同,使用的方法也很简单,如下所示:adplu s.vbs -han g -p1234-o d:\dump其中-hang指明使用ha ng模式,亦即在进程运行过程中附加上去s napsh ot抓取一个dump文件,完成之后det ach。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
windbg 常用命令
Windbg是微软公司开发的一款用于调试Windows操作系统的强大工具。
它提供了丰富的命令和功能,可以帮助开发人员快速定位和解决软件中的问题。
本文将介绍Windbg常用命令,包括常见的调试命令、内存查看命令、线程和进程命令等。
一、常见的调试命令
1. g(go):继续执行程序,直到下一个断点或异常发生。
2. t(trace):单步执行程序,逐行跟踪代码执行过程。
3. p(print):打印变量的值。
4. r(registers):查看寄存器的值。
5. bp(breakpoint):设置断点,当程序执行到指定位置时暂停。
6. bl(breakpoint list):显示已设置的断点列表。
7. bc(breakpoint clear):清除指定的断点或所有断点。
8. .restart:重新启动目标程序。
二、内存查看命令
1. dt(display type):显示指定类型的结构体或变量的值。
2. dq(display quadword):显示内存中指定地址的8字节数据。
3. du(display unicode string):显示内存中以Unicode格式存储的字符串。
4. da(display ASCII string):显示内存中以ASCII格式存储的字符串。
5. db(display byte):显示内存中指定地址的一个字节数据。
6. dd(display dword):显示内存中指定地址的4字节数据。
7. dps(display pointer size):显示内存中指定地址开始的指针数组。
三、线程和进程命令
1. ~(tilde):列出当前所有线程的信息。
2. ~n(tilde n):切换到第n个线程。
3. k(stack trace):显示当前线程的函数调用栈。
4. lm(list modules):显示当前进程加载的所有模块。
5. .process:切换到指定的进程上下文。
6. .thread:切换到指定的线程上下文。
7. .kill(kill process):终止指定的进程。
四、其他常用命令
1. !analyze -v:分析崩溃的程序并提供详细的调试信息。
2. !heap:显示当前进程的堆信息。
3. !address:显示当前进程的内存地址信息。
4. !locks:显示当前进程的锁信息。
5. !handle:显示当前进程的句柄信息。
6. !runaway:显示当前进程中CPU时间最长的线程。
Windbg作为一款强大的调试工具,除了以上介绍的常用命令外,
还有许多更复杂和专业的命令可供使用。
熟练掌握这些命令,可以帮助开发人员更快速地定位和解决问题。
此外,Windbg还支持脚本编写、扩展插件等功能,进一步提升了调试的效率和便利性。
总结:
本文介绍了Windbg常用的调试命令、内存查看命令、线程和进程命令等。
通过使用这些命令,开发人员可以更好地理解和调试程序的运行过程,快速定位和解决问题。
然而,Windbg作为一款强大而复杂的工具,仅凭这些常用命令是无法完全掌握其全部功能的。
因此,建议开发人员在实际使用过程中多加练习和研究,以提高自己的调试能力。