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基本命令的更多相关文章

  1. .Net Memory -- Windbg基本命令

    命令 解释 .cls 清空命令窗口屏幕 .load dllfullpath 加载debugger扩展dll如SOS sosex psscor. .loadby dll moduleName 加载deb ...

  2. Windbg基本命令应用总结

    .cordll -ve -u -l //reload core dlls ------加载下载系统文件符号的URL---------- .sympath SRV*C:\Symbols*http://m ...

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

    摘要 : 本章节介绍NetExt常用的命令. 并且对SOS进行一些对比. NetExt的帮助 要想玩好NetExt, 入门就得看帮助. 看NetExt的帮助可以调用!whelp 命令. 这样hi列举出 ...

  4. Windbg调试命令详解

    作者:张佩][原文:http://www.yiiyee.cn/Blog] 1. 概述 用户成功安装微软Windows调试工具集后,能够在安装目录下发现四个调试器程序,分别是:cdb.exe.ntsd. ...

  5. Windbg使用简明指南

    第一章 准备 1.1.    环境配置 _NT_DEBUGGER_EXTENSION_PATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 _NT_SY ...

  6. windbg调试.net程序

    1. 解决线上.NET应用程序的如下问题: 崩溃 CPU高 程序异常 程序Hang死 2. 安装WinDbg: http://msdn.microsoft.com/en-us/windows/hard ...

  7. windbg命令分类与概述

    WinDBG的大多数功能是以命令方式工作的, 本系列将介绍WinDBG的三类命令, 标准命令, 元命令和扩展命令. =============== 标准命令 =============== 标准命令用 ...

  8. Windbg简单介绍

    1.1 使用帮助 Windbg中的命令分为三种:基本命令.元命令和扩展命令.基本命令和元命令都是调试器自带的,元命令以" ."开头. 扩展命令是外部加入的,以"!&quo ...

  9. windbg命令学习1

    一.windbg 常用知识: 1. Windbg中的调试命令,分为三种:基本命令,元命令和扩展命令.基本命令和元命令是调试器自带的,元命令总是以“.”开头,而扩展命令是外部加入的,总是以感叹号“!”开 ...

随机推荐

  1. spring中的ResourceBundleMessageSource

    1 首先创建两个资源文件    messages_en_US.properties customer.name=Yong Mook Kim, age : {0}, URL : {1} messages ...

  2. [Angular 2] Understanding @Injectable

    In order to resolve a dependency, Angular’s DI uses type annotations. To make sure these types are p ...

  3. 使用compareDocumentPosition比较两个元素在文档中的位置

    PS:尊重原创,转载请注明来自http://www.cnblogs.com/Raoh/p/js_compareDocumentPosition_between_two_node.html 使用comp ...

  4. C读取配置文件

    #ifndef __CFG_OP_H__ #define __CFG_OP_H__ #ifdef __cplusplus extern "C" { #endif //获取配置项 i ...

  5. 从B树、B+树、B*树谈到R 树

    从B 树.B+ 树.B* 树谈到R 树 作者:July.weedge.Frankie.编程艺术室出品. 说明:本文从B树开始谈起,然后论述B+树.B*树,最后谈到R 树.其中B树.B+树及B*树部分由 ...

  6. PHP.2-LAMP平台介绍及网站的工作原理

    LAMP平台介绍及网站的工作原理 1.HTTP协议 URL(UniformResourceLocator)统一资源定位符,就是网页地址的意思.[格式:协议://主机.端口.文件.附加资源] ##URL ...

  7. Debian 7 安装 Emacs 24.3

    Emacs 24.3出来好久了,但是在Debian 7里还是Emacs 23的版本. 以下是安装步骤(9步): -dev libncurses5-dev autoconf automake texin ...

  8. 如何向Android模拟器打电话发短信

    1. 启动Android Emulator, 查看标题栏找出端口.一般是android emulator(5554),其中5554就是端口. 2. 打开命令行,输入telnet localhost 5 ...

  9. .net mvc sample 参考网址

    http://www.asp.net/mvc/samples     http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store- ...

  10. [设计模式]<<设计模式之禅>>关于里氏替换原则

    在面向对象的语言中,继承是必不可少的.非常优秀的语言机制,它有如下优点:● 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性:● 提高代码的重用性:● 子类可以形似父类,但又异于父类,“龙 ...