windbg基本命令

1,

.reload

k 当前调用堆栈。
u 当前正在执行的代码。

2,

~ 查看被调试进程中的线程信息
每一行是一个线程的信息。第一行中,0 表示这个进程的编号;1ff4.1038 是 16 进制数
字,前者是当前进程的进程 ID,后者是线程 ID;后面的信息是线程状态和 Teb 地址。第二
行的线程编号前有一个点号“.”,表示这是当前线程,也就是刚才使用 u 和 k 命令查看到的
线程。

0:046>,冒号前的数字表示当前的进程号,同时调试多个进程
时,每个进程都会被指派一个进程号;冒号后的 000 表示线程号。
进行内核调试时,如果是单处理器系统,提示符是 kd>的形式;如果
是多处理器系统,则是 0: kd>的形式,前面的 0 表示处理器号。

3,

~threadIDs 切换到指定threadID线程。

4,

软断点

bp:  可以直接对某个代码地址设置断点。

0:000> bp TestModule!main

在TestModule内的main函数设置断点。同直接F9。

bl 查看已经存在的断点,bd禁用断点,de重启断点,bc删除断点。

0:000> bl

0 e 00401030 [C:\Users\NetRoc\Desktop\TestDebug1\T estDebug1.cpp @ 23] 
1 e 0040105d [C:\Users\NetRoc\Desktop\TestDebug1\T estDebug1.cpp @ 27]

如上面命令输出中的第二行,1 表示断点 ID。当禁用、重新启或删除断点,或者其他命令来操作这个断点时,都需要用到这个 ID;

第二个“e”表示断点是启用的,如果是“d”则表示当前被禁用,如果带“u”则说明是后面将要介绍的未定断点;第三列的 0040105d 是该断点的地址;

后面的内容是断点所在的源文件和行号。

对于还没有加载到内存中的模块,比如在调用了 LoadLibrary 之后才加载的DLL。如果使用 bp 来对这个模块中的函数设置断点,会找不到符号,这时就会被调试器自动转变成用 bu 命令来设置的未定断点。

bu 可以对还不能识别的符号设置断点,当系统中有新模块加载进来时,调试器会对未定断点再次进行识别,如果找到了匹配的符号则会设置它。

对于bu的断点上面断点ID后面的e显示是eu,表示启用的未定断点。

5,

硬断点 ba:

ba 访问断点可以在某个内存地址处的数据被读取、写入或者执行的时候中断下来。

首先用.restart 命令重新启动调试目标。
对局部变量 x 有赋值操作 x *= 10 。
输入 ba w4 @@C++(&x)命令。“&i”表示变量 i 的地址,“w”表示写入操作,“4”表示只处理&x地址处 4 字节的写入操作。F5 运行,程序被成功中断下来 Breakpoint 1 hit。

WinDbg 的数据断点是通过 CPU 硬件断点实现的。而 DRx 寄存器所设置的内存访问断
点属于陷阱(Trap)而不是错误(Fault),CPU 对陷阱的处理是执行完该条指令后触发异常。因
此 WinDbg 只能在之后的一条指令处断下来。

Windows 调试工具支持两种语法的表达式:MASM 语法和 C++语法。如果没有特别指
明的话,默认是使用 MASM 表达式语法。一般来说,MASM 语法的表达式用来表示地址比
较方便,而 C++表达式用来表示结构或者类成员比较方便。可以通过@@C++(…)或者
@@masm(…)来包含表达式以明确指明所使用的语法。当使用 MASM 语法时,可以用双冒
号(::)或者双下划线(__)来表示类成员;但是使用 C++语法时则只能使用双冒号。

6,

d    :查看内存

db   :按byte查看内存

dd   : 按DWORD查看内存

dv   :查看当前作用域下局部变量的类型和值

? x   :  ?表达式求值命令常常用来查看符号所代表的值。 ? x 命令,它可以显示符号 x 对应的值,即局部变量 x的地址。

r    :查看或者修改寄存器和伪寄存器

windbg基本命令

时间: 2024-11-08 23:41:19

windbg基本命令的相关文章

WinDBG.基本命令

1.清屏 1.1.在命令行模式下(程序是中断的状态),输入命令:".cls" ZC:注意 有一个".",少了这个 点 的话,就是另一个命令了(不知道具体是啥,但是会加载一系列的东西,还都加载失败了...) 1.2.使用菜单栏操作(无需中断程序) 2. 3. 4. 5. 原文地址:https://www.cnblogs.com/debugskill/p/9027903.html

Windbg Extension NetExt 使用指南 【2】 ---- NetExt 的基本命令介绍

摘要 : 本章节介绍NetExt常用的命令. 并且对SOS进行一些对比. NetExt的帮助 要想玩好NetExt, 入门就得看帮助. 看NetExt的帮助可以调用!whelp 命令. 这样hi列举出NetExt所支持的所有命令. 0:000> !netext.whelp netext version 2.0.0.5000 Feb 9 2015 License and usage can be seen here: !whelp license Check Latest version: !wu

Windbg for .Net -- 基本命令

命令 解释 .cls 清空命令窗口屏幕 .load dllfullpath 加载debugger扩展dll如SOS sosex psscor. .loadby dll moduleName 加载debugger扩展dll, 该扩展dll与所指定的module的dll在同一目录下.例如.loadby sos clr                                                                                            

Windbg(2)

摘抄于:http://www.cnblogs.com/awpatp/category/228209.html Debug相关的一些小技巧 摘要: 1. 如何Debug一个进程的子进程? 答: 使用WinDBG attach到父进程, 然后输入命令".childdbg 1"(无引号). 这样子进程在刚刚被加载的时候, WinDBG就Attach上去了. 这两个进程的debug session都在一个WinDBG的窗口里, 如果想要切换当前进程, 可以使用命令"|"来查

Windbg DUMP

Windbg DUMP分析(原创汇总) 1. 引入篇 1.1 下载安装 1.2 调试器 1.3 操作界面2. 命令篇 2.1 按照来源划分 2.1.1 基本命令 2.1.2 元命令 2.1.3 扩展命令 2.2 按照功能划分 2.2.1 系统信息 2.2.2 进程 2.2.3 模块 2.2.4 符号 2.2.5 线程 2.2.6 内存 2.2.7 事件3. 探讨篇 3.1方法内联 3.2 字符串驻留池 1. 引入篇 引入篇 1.1 下载安装 1.2 调试器 1.3 操作界面 所谓技术分享,其实是

windbg 调试命令笔记1

一.windbg 常用知识: 1. Windbg中的调试命令,分为三种:基本命令,元命令和扩展命令.基本命令和元命令是调试器自带的,元命令总是以“.”开头,而扩展命令是外部加入的,总是以感叹号“!”开头 基本命令最少了,大概40个左右.列举所有的基本命令,使用如下命令: ? 元命令有一百多个,使用下面命令列举所有元命令: .help  [/D] 2. 基本信息 version    显示操作系统的版本信息以及Windbg本身的版本信息,Windbg的配置和操作系统密切相关,所以将操作系统的版本信

Windbg DUMP分析(原创汇总)

1. 引入篇 1.1 下载安装 1.2 调试器 1.3 操作界面2. 命令篇 2.1 按照来源划分 2.1.1 基本命令 2.1.2 元命令 2.1.3 扩展命令 2.2 按照功能划分 2.2.1 系统信息 2.2.2 进程 2.2.3 模块 2.2.4 符号 2.2.5 线程 2.2.6 内存 2.2.7 事件3. 探讨篇 3.1方法内联 3.2 字符串驻留池 1. 引入篇 引入篇 1.1 下载安装 1.2 调试器 1.3 操作界面 所谓技术分享,其实是一个自我总结和相互学习.不断成长的过程.

Windbg调试命令详解

发表于2013 年 8 月 23 日由张佩 转载注明>> [作者:张佩][原文:http://www.yiiyee.cn/Blog] 1. 概述 用户成功安装微软Windows调试工具集后,能够在安装目录下发现四个调试器程序,分别是:cdb.exe.ntsd.exe.kd.exe和Windbg.exe.其中cdb.exe和ntsd.exe只能调试用户程序,Kd.exe主要用于内核调试,有时候也用于用户态调试,上述三者的一个共同特点是,都只有控制台界面,以命令行形式工作. Windbg.exe在

使用Windbg调试.Net应用程序 [转]

1. 解决线上.NET应用程序的如下问题: 崩溃 CPU高 程序异常 程序Hang死 2. 安装WinDbg: http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx 3. 配置WinDbg: 运行WinDbg->菜单->File->Symbol File Path->按照下面的方法设置_NT_SYMBOL_PATH变量: 在弹出的框中输入“C:\MyCodesSymbols; SRV*C:\MyLocalSym