NetRoc's Blog

N-Tech

 

WinDbg 文档翻译----18

cc682/NetRoc

http://netroc682.spaces.live.com/

调试器操作(常规)

本节包含以下主题:

控制目标

使用断点

读取和写入内存

读写寄存器和标志

查看调用堆栈

汇编模式调试

源码模式调试

调试BIOS代码

调试多个目标

结束调试会话

控制目标

调试一个用户模式的目标程序或者内核模式的目标机时,目标可以被运行停止

当调试器连接到内核模式的目标时,调试器会继续让目标运行,除非使用了-b 命令行选项、目标系统停止相应(即崩溃)或目标系统因为先前的内核调试行为而处于中断状态。

当调试器启动或连接到一个用户模式目标时,会立即中断目标的执行,除非使用-g 命令行选项。更多信息,查看初始断点

运行中的目标

当目标正在运行时,大多数调试操作都不可用。

如果要停止运行中的目标,可以输入中断(Break)命令。该命令使得调试器中断到目标中。即调试器停止目标,并获得所有控制权。应用程序可能不会立即中断下来。例如,如果所有线程当前正在执行系统代码,或者在等待操作,中断会延迟到控制返回应用程序代码时发生。

如果运行中的目标发生异常、特定事件发生、遇到断点或程序正常关闭,目标会中断到调试器。 该动作停止目标并将所有控制权交给调试器。调试器命令窗口会显示一条消息来描述这个错误、事件或断点。

停止的目标

通过下面一些方法来开始或控制目标的执行:

  • 使用运行(Go)命令使得程序开始运行。
  • 一次单步执行一条指令,使用单步进入(Step Into) 或单步步过( Step Over )命令。如果发生函数调用,Step Into会进入函数体重并继续开始单步执行每条指令。Step Over将函数调用当作单步。当调试器运行于汇编模式时,单步操作每次执行一条指令。当调试器运行于源码模式时,单步操作一次执行一行代码。
  • 结束当前函数的执行并在返回时中断,使用执行到返回(Step Out)或 or 跟踪和监视(Trace and Watch)命令。Step Out命令继续程序执行知道当前函数结束。Trace and Watch 继续执行知道当前函数结束,并显示函数调用的摘要信息。但是,必须在函数的第一条指令使用Trace and Watch 命令。在基于Itanium的处理器上跟踪到分支(Trace to Next Branch) 运行直到遇到分支指令。
  • 如果有异常发生,可以使用处理异常并运行(Go with Exception Handled)和不处理异常并运行(Go with Exception Not Handled)命令来恢复执行和控制异常状态。(关于异常的更多信息,查看控制异常和事件。)
  • (仅WinDbg) 如果在反汇编窗口(Disassembly window)源码窗口(Source window)选中一行,然后使用 运行到光标(Run to Cursor)命令,程序会一直运行直到遇到选中那一行。
  • (仅User Mode) 关闭目标程序并重新开始运行它,可以使用重新开始(Restart)命令。该命令只能用于调试器创建的进程。进程重起之后,会立即中断到调试器。
  • (仅WinDbg) 使用停止调试(Stop Debugging)命令关闭目标程序并清空调试器。该命令使得可以开始调试另一个目标。

命令窗体

大多数用于开始或控制目标执行的命令都以文本命令、菜单命令、工具栏按钮和快捷键方式存在。基本的文本命令可以在CDB、KD或WinDbg中使用。(文本命令一般都支持附加的选项,例如改变程序计数器的位置或执行指定数量的指令。)可以在WinDbg中使用菜单命令、工具栏按钮和快捷键。

以如下方式使用这些命令。

命令

WinDbg按钮

WinDbg命令

WinDbg快捷键

作用

  1

 

Debug | Run to Cursor

F7

CTRL + F10

(仅WinDbg) 运行到光标位置。

  2

 

Debug | Stop Debugging

SHIFT + F5

停止所有的调试并关闭目标。

(CDB/KD) CTRL+C

3

 

Debug | Break

CTRL + BREAK

停止执行,调试器中断目标。

.restart (Restart Target Application)

4

 

Debug | Restart

CTRL + SHIFT + F5

(仅User mode) 重起目标程序

g (Go)

5

 

Debug | Go

F5

目标自由执行。

gc (Go from Conditional Breakpoint)

     

在一次条件断点之后恢复执行。

gh (Go with Exception Handled)

 

Debug | Go Handled Exception

 

g (Go)相同,但是当前异常被当作已处理。

gn (Go with Exception Not Handled)

 

Debug | Go Unhandled Exception

 

g (Go)相同,但是当前异常被当作未处理。

gu (Go Up)

6

 

Debug | Step Out

 

目标运行到当前函数执行完成。

p (Step)

7

 

Debug | Step Over

 

目标执行一条指令。如果该指令是函数调用,则这个调用被当作一步执行。

pa (Step to Address)

     

目标运行直到到达指定的地址。该函数中执行的每一步都会显示出来(但是不显示被调用的函数中的内容。)

pc (Step to Next Call)

     

目标运行直到遇到下一个call指令。如果当前指令是call,则这个call会被完成并执行到下一个call

pct (Step to Next Call or Return)

     

目标继续执行,直到遇到一个call指令或者return指令。

ph (Step to Next Branching Instruction)

     

目标执行,直到到达任何一种分支指令,包括条件和非条件分支、call调用、函数返回和系统调用。

pt (Step to Next Return)

     

目标执行,直到遇到return指令。

t (Trace)

8

 

Debug | Step Into

F11

F8

目标执行一条指令。如果该指令是一条call,调试器跟踪到这个call中。

ta (Trace to Address)

     

目标执行直到指定地址。本函数和被调用函数中的每一步都会显示出来。

tb (Trace to Next Branch)

     

(除内核模式之外的所有模式,仅在基于x86的系统上) 目标运行到下一条分支指令。

tc (Trace to Next Call)

     

目标运行到下一条call指令。如果当前指令是call,该命令会跟踪进去直到遇到另一条call

tct (Trace to Next Call or Return)

     

目标运行到下一条call指令或return指令。如果当前指令是callreturn,命令会跟踪进去知道遇到另一个callreturn

th (Trace to Next Branching Instruction)

     

目标执行直到遇到任意类型的分支指令,包括条件和非条件跳转、call、return和系统调用。如果当前指令是分支指令,该命令跟踪进入直到遇到下一个分支指令。

tt (Trace to Next Return)

     

目标运行直到遇到return指令。如果当前指令是一条return,则跟踪进入直到另外一条return

wt (Trace and Watch Data)

     

目标执行,直到指定的函数执行完成。这时会显示统计信息。

 

关于如何重起目标机的更多信息,查看崩溃和重起目标机

命令行选项

如果要在程序启动或加载时立即停止,可以在CDB或WinDbg使用-g命令行选项。更多信息,查看初始断点

CDB和WinDbg也支持-G 命令行选项。 该选项使得当应用程序正常结束时调试会话被结束。

下面的命令尝试从开始到结束的运行应用程序,调试器仅在发生错误时显示提示。

cdb -g -G ApplicationName 

使用-pt 命令行选项来设置中断超时时间。有一些特定问题会造成目标不能和调试器通信。如果输入了某个中断命令但是调试器在这个时间到达之前未能中断目标,则调试器显示一条"Break-in timed out" 消息。

这时,调试器停止试图中断目标的行为。取而代之的是,暂停目标的执行使得可以检查(但不能控制)目标程序的状态。

默认的超时时间是30秒。

posted on 2008-05-04 13:39 NetRoc 阅读(1495) 评论(1)  编辑 收藏 引用 所属分类: WinDbg文档翻译

评论

# re: WinDbg 文档翻译----18 2012-01-04 00:01 bombless

哦哦~多谢博主收集的好东西~~

看起来真是十分清晰~~

而且又是在MSN空间已经关了的这个时期。。

忍不住转载了,希望博主能同意~

http://hi.baidu.com/xyk34/blog/item/b4fd61354a66790f91ef391e.html  回复  更多评论   

只有注册用户登录后才能发表评论。

导航

统计

常用链接

留言簿(7)

随笔档案(99)

文章分类(35)

文章档案(32)

Friends

Mirror

搜索

最新评论

阅读排行榜

评论排行榜