WinDbg常用命令系列---单步执行p*
p (Step)
p命令执行单个指令或源代码行,并可选地显示所有寄存器和标志的结果值。当子例程调用或中断发生时,它们被视为单个步骤。
用户模式:
[~Thread] p[r] [= StartAddress] [Count] ["Command"]
内核模式:
p[r] [= StartAddress] [Count] ["Command"]
参数:
- Thread
指定要继续执行的线程。所有其他线程都被冻结。只能在用户模式下指定线程。 - r
打开和关闭寄存器和标志的显示。默认情况下,将显示寄存器和标志。可以使用pr、tr或.prompt_allow-reg命令禁用寄存器显示。所有这三个命令都控制着相同的设置,您可以使用它们中的任何一个来覆盖以前对这些命令的任何使用。也可以使用l-os命令禁用寄存器显示。此设置与其他三个命令不同。要控制显示哪些寄存器和标志,请使用rm (Register Mask)命令。
dǎ打 kāi开 hé和 guān关 bì闭 jì寄 cún存 qì器 hé和 biāo标 zhì志 de的 xiǎn显 shì示 。 mò默 rèn认 qíng情 kuàng况 xià下 , jiāng将 xiǎn显 shì示 jì寄 cún存 qì器 hé和 biāo标 zhì志 。 kě可 yǐ以 shǐ使 yòng用 p r 、 t r huò或 . p r o m p t _ a l l o w - r e g mìng命 lìng令 jìn禁 yòng用 jì寄 cún存 qì器 xiǎn显 shì示 。 suǒ所 yǒu有 zhè这 sān三 gè个 mìng命 lìng令 dōu都 kòng控 zhì制 zhe着 xiāng相 tóng同 de的 shè设 zhì置 , nín您 kě可 yǐ以 shǐ使 yòng用 tā它 men们 zhōng中 de的 rèn任 hé何 yī一 gè个 lái来 fù覆 gài盖 yǐ以 qián前 duì对 zhè这 xiē些 mìng命 lìng令 de的 rèn任 hé何 shǐ使 yòng用 。
You can also disable register display by using the l-os command. This setting is separate from the other three commands. To control which registers and flags are displayed, use the rm (Register Mask) command.
- StartAddress
指定执行应开始的地址。如果不使用startaddress,则从指令指针指向的指令开始执行 - Count
指定停止前要单步执行的指令或源行数。每个步骤在调试器命令窗口中显示为单独的操作。默认值为1。 - Command
指定要在执行步骤后执行的调试器命令。此命令在显示标准p结果之前执行。如果还使用count,则在所有步骤完成后(但在显示最后一步的结果之前)执行指定的命令。
当您指定count时,每个指令都会在单步执行时显示出来。如果调试器在单步执行时遇到调用指令或中断,则被调用的子例程将完全执行,除非遇到断点。在调用或中断后的下一条指令中,控件将返回给调试器。每个步骤执行单个汇编指令或单个源行,这取决于调试器是处于汇编模式还是源模式。使用l+t和l-t命令或windbg工具栏上的按钮在这些模式之间切换。当您在windbg中多次快速单步执行时,调试信息窗口将在每个步骤之后更新。如果此更新导致响应时间变慢,请使用.suspend_ui (Suspend WinDbg Interface)暂时暂停刷新这些窗口。
dāng当 nín您 zhǐ指 dìng定 c o u n t shí时 , měi每 gè个 zhǐ指 lìng令 dōu都 huì会 zài在 dān单 bù步 zhí执 xíng行 shí时 xiǎn显 shì示 chū出 lái来 。
pa (Step to Address)
If the debugger encounters a call instruction or interrupt while stepping, the called subroutine will execute completely unless a breakpoint is encountered. Control is returned to the debugger at the next instruction after the call or interrupt.
pa命令执行程序,直到到达指定的地址,显示每个步骤。
用户模式:
[~Thread] pa [r] [= StartAddress] StopAddress ["Command"]
内核模式:
pa [r] [= StartAddress] StopAddress ["Command"]
参数:
rú如 guǒ果 tiáo调 shì试 qì器 zài在 dān单 bù步 zhí执 xíng行 shí时 yù遇 dào到 diào调 yòng用 zhǐ指 lìng令 huò或 zhōng中 duàn断 , zé则 bèi被 diào调 yòng用 de的 zǐ子 lì例 chéng程 jiāng将 wán完 quán全 zhí执 xíng行 , chú除 fēi非 yù遇 dào到 duàn断 diǎn点 。 zài在 diào调 yòng用 huò或 zhōng中 duàn断 hòu后 de的 xià下 yī一 tiáo条 zhǐ指 lìng令 zhōng中 , kòng控 jiàn件 jiāng将 fǎn返 huí回 gěi给 tiáo调 shì试 qì器 。
- Thread
指定要继续执行的线程。所有其他线程都被冻结。只能在用户模式下指定线程。
- r
打开和关闭寄存器和标志的显示。默认情况下,将显示寄存器和标志。可以使用pr、tr或.prompt_allow-reg命令禁用寄存器显示。所有这三个命令都控制着相同的设置,您可以使用它们中的任何一个来覆盖以前对这些命令的任何使用。也可以使用l-os命令禁用寄存器显示。此设置与其他三个命令不同。要控制显示哪些寄存器和标志,请使用rm (Register Mask)命令。
- StartAddress
指定执行应开始的地址。如果不使用startaddress,则从指令指针指向的指令开始执行。
- StopAddress
指定停止执行的地址。此地址必须与指令的确切地址匹配。
- Command
指定要在执行步骤后执行的调试器命令。此命令在显示标准p结果之前执行。如果还使用count,则在所有步骤完成后(但在显示最后一步的结果之前)执行指定的命令。
Each step executes a single assembly instruction or a single source line, depending on whether the debugger is in assembly mode or source mode. Use the l+t and l-t commands or the buttons on the WinDbg toolbar to switch between these modes.
pa命令使目标开始执行。此执行将继续,直到到达指定的指令或遇到断点。如果在内核模式下使用此命令,则当在任何虚拟地址空间中的指定虚拟地址处遇到指令时,执行将停止。在此执行期间,所有步骤都将显式显示。被调用函数被视为单个单元。因此,此命令的显示与重复执行p(step)直到程序计数器到达指定地址时所看到的类似。
例如,下面的命令显式地遍历目标代码,直到到达当前函数的返回地址。
0:000> pa @$ra
下面的示例演示如何使用pa命令和kb命令来显示堆栈跟踪:
měi每 gè个 bù步 zhòu骤 zhí执 xíng行 dān单 gè个 huì汇 biān编 zhǐ指 lìng令 huò或 dān单 gè个 yuán源 xíng行 , zhè这 qǔ取 jué决 yú于 tiáo调 shì试 qì器 shì是 chǔ处 yú于 huì汇 biān编 mó模 shì式 hái还 shì是 yuán源 mó模 shì式 。 shǐ使 yòng用 l + t hé和 l - t mìng命 lìng令 huò或 w i n d b g gōng工 jù具 lán栏 shàng上 de的 àn按 niǔ钮 zài在 zhè这 xiē些 mó模 shì式 zhī之 jiān间 qiē切 huàn换 。
0:000> pa 70b5d2f1 "kb"
pc (Step to Next Call)
When you are quickly stepping many times in WinDbg, the debugging information windows are updated after each step. If this update causes slower response time, use .suspend_ui (Suspend WinDbg Interface) to temporarily suspend the refreshing of these windows.
pc命令执行程序,直到到达调用指令。
用户模式:
[~Thread] pc [r] [= StartAddress] [Count]
内核模式:
pc [r] [= StartAddress] [Count]
参数:
- Thread
指定要继续执行的线程。所有其他线程都被冻结。只能在用户模式下指定线程。 - r
打开和关闭寄存器和标志的显示。默认情况下,将显示寄存器和标志。可以使用pr、tr或.prompt_allow-reg命令禁用寄存器显示。所有这三个命令都控制着相同的设置,您可以使用它们中的任何一个来覆盖以前对这些命令的任何使用。也可以使用l-os命令禁用寄存器显示。此设置与其他三个命令不同。要控制显示哪些寄存器和标志,请使用rm (Register Mask)命令。 - StartAddress
指定调试器开始执行的地址。否则,调试器从指令指针指向的指令开始。 - Count
指定调试器要停止此命令必须遇到的调用指令数。默认值为1。
pc命令使目标开始执行。此执行将继续,直到达到调用指令或遇到断点。如果程序计数器已经在调用指令上,则执行整个调用。返回此调用后,将继续执行,直到到达另一个调用。这个调用的执行,而不是跟踪,是pc和tc(跟踪到下一个调用)之间的唯一区别。在源代码模式下,可以将一个源代码行与多个程序集指令相关联。pc命令不会在与当前源行关联的调用指令处停止。
ph (Step to Next Branching Instruction)
p c mìng命 lìng令 shǐ使 mù目 biāo标 kāi开 shǐ始 zhí执 xíng行 。 cǐ此 zhí执 xíng行 jiāng将 jì继 xù续 , zhí直 dào到 dá达 dào到 diào调 yòng用 zhǐ指 lìng令 huò或 yù遇 dào到 duàn断 diǎn点 。
ph命令执行程序,直到到达任何类型的分支指令,包括条件或无条件分支、调用、返回和系统调用。
用户模式:
[~Thread] ph [r] [= StartAddress] [Count]
内核模式:
ph [r] [= StartAddress] [Count]
参数:
- Thread
指定要继续执行的线程。所有其他线程都被冻结。只能在用户模式下指定线程。 - r
打开和关闭寄存器和标志的显示。默认情况下,将显示寄存器和标志。可以使用pr、tr或.prompt_allow-reg命令禁用寄存器显示。所有这三个命令都控制着相同的设置,您可以使用它们中的任何一个来覆盖以前对这些命令的任何使用。也可以使用l-os命令禁用寄存器显示。此设置与其他三个命令不同。要控制显示哪些寄存器和标志,请使用rm (Register Mask)命令。 - StartAddress
指定调试器开始执行的地址。否则,调试器从指令指针指向的指令开始。 - Count
指定要停止此命令必须遇到的分支指令数。默认值为1。
If the program counter is already on a call instruction, the entire call is executed. After this call is returned, execution continues until another call is reached. This execution, rather than tracing, of the call is the only difference between pc and tc (Trace to Next Call).
ph命令使目标开始执行。此执行将继续执行,直到达到分支指令或遇到断点为止。如果程序计数器已经在分支指令上,则执行整个分支指令。返回此分支指令后,继续执行,直到到达另一个分支指令。调用的这种执行而不是跟踪是ph和th(跟踪到下一个分支指令)之间的唯一区别。在源模式下,可以将一个源行与多个汇编指令关联。ph命令不会在与当前源行关联的分支指令处停止。
p h mìng命 lìng令 shǐ使 mù目 biāo标 kāi开 shǐ始 zhí执 xíng行 。 cǐ此 zhí执 xíng行 jiāng将 jì继 xù续 zhí执 xíng行 , zhí直 dào到 dá达 dào到 fēn分 zhī支 zhǐ指 lìng令 huò或 yù遇 dào到 duàn断 diǎn点 wéi为 zhǐ止 。
pt (Step to Next Return)
If the program counter is already on a branching instruction, the entire branching instruction is executed. After this branching instruction is returned, execution continues until another branching instruction is reached. This execution, rather than tracing, of the call is the only difference between ph and th (Trace to Next Branching Instruction).
Pt命令执行程序,直到达到返回指令。
用户模式:
[~Thread] pt [r] [= StartAddress] [Count] ["Command"]
内核模式:
rú如 guǒ果 chéng程 xù序 jì计 shù数 qì器 yǐ已 jīng经 zài在 fēn分 zhī支 zhǐ指 lìng令 shàng上 , zé则 zhí执 xíng行 zhěng整 gè个 fēn分 zhī支 zhǐ指 lìng令 。 fǎn返 huí回 cǐ此 fēn分 zhī支 zhǐ指 lìng令 hòu后 , jì继 xù续 zhí执 xíng行 , zhí直 dào到 dào到 dá达 lìng另 yī一 gè个 fēn分 zhī支 zhǐ指 lìng令 。 diào调 yòng用 de的 zhè这 zhǒng种 zhí执 xíng行 ér而 bù不 shì是 gēn跟 zōng踪 shì是 p h hé和 t h ( gēn跟 zōng踪 dào到 xià下 yī一 gè个 fēn分 zhī支 zhǐ指 lìng令 ) zhī之 jiān间 de的 wéi唯 yī一 qū区 bié别 。
In source mode, you can associate one source line with multiple assembly instructions. The ph command does not stop at a branching instruction that is associated with the current source line.
pt [r] [= StartAddress] [Count] ["Command"]
参数:
- Thread
指定要继续执行的线程。所有其他线程都被冻结。只能在用户模式下指定线程。 - r
打开和关闭寄存器和标志的显示。默认情况下,将显示寄存器和标志。可以使用pr、tr或.prompt_allow-reg命令禁用寄存器显示。所有这三个命令都控制着相同的设置,您可以使用它们中的任何一个来覆盖以前对这些命令的任何使用。也可以使用l-os命令禁用寄存器显示。此设置与其他三个命令不同。要控制显示哪些寄存器和标志,请使用rm (Register Mask)命令。 - StartAddress
指定调试器开始执行的地址。否则,调试器从指令指针指向的指令开始。 - Count
指定要停止此命令必须遇到的返回指令数。默认值为1。 - Command
指定要在执行步骤后执行的调试器命令。此命令在显示标准pt结果之前执行。如果还使用count,则在所有步骤完成后(但在显示最后一步的结果之前)执行指定的命令。
rú如 guǒ果 chéng程 xù序 jì计 shù数 qì器 yǐ已 jīng经 zài在 diào调 yòng用 zhǐ指 lìng令 shàng上 , zé则 zhí执 xíng行 zhěng整 gè个 diào调 yòng用 。 fǎn返 huí回 cǐ此 diào调 yòng用 hòu后 , jiāng将 jì继 xù续 zhí执 xíng行 , zhí直 dào到 dào到 dá达 lìng另 yī一 gè个 diào调 yòng用 。 zhè这 ge个 diào调 yòng用 de的 zhí执 xíng行 , ér而 bù不 shì是 gēn跟 zōng踪 , shì是 P C hé和 T C ( gēn跟 zōng踪 dào到 xià下 yī一 gè个 diào调 yòng用 ) zhī之 jiān间 de的 wéi唯 yī一 qū区 bié别 。
pt命令将导致目标开始执行。 此执行将继续,直至返回达到指令或遇到断点。如果已经打开的程序计数器返回执行指令,整个返回。 返回此返回后,执行将继续,直到另一个返回为止。 此执行,而不是跟踪,在调用之间的唯一区别是pt并tt (到下一步返回的 Trace)。源模式中,可以将一个源行与多个程序集指令相关联。 pt命令不会停止处返回与当前的源行相关联的指令。
In source mode, you can associate one source line with multiple assembly instructions. The pc command does not stop at a call instruction that is associated with the current source line.
pct (Step to Next Call or Return)
pct命令执行程序,直到它到达调用指令或返回指令。
用户模式:
[~Thread] pct [r] [= StartAddress] [Count]
内核模式:
pct [r] [= StartAddress] [Count]
参数:
- Thread
指定要继续执行的线程。所有其他线程都被冻结。只能在用户模式下指定线程。 - r
打开和关闭寄存器和标志的显示。默认情况下,将显示寄存器和标志。可以使用pr、tr或.prompt_allow-reg命令禁用寄存器显示。所有这三个命令都控制着相同的设置,您可以使用它们中的任何一个来覆盖以前对这些命令的任何使用。也可以使用l-os命令禁用寄存器显示。此设置与其他三个命令不同。要控制显示哪些寄存器和标志,请使用rm (Register Mask)命令。 - StartAddress
指定调试器开始执行的地址。否则,调试器从指令指针指向的指令开始。 - Count
指定要停止此命令必须遇到的调用或返回指令数。默认值为1。
pct命令使目标开始执行。此执行将继续,直到达到调用或返回指令或遇到断点为止。如果程序计数器已经在调用或返回指令上,则执行整个调用或返回。返回此调用或返回后,将继续执行,直到到达另一个调用或返回为止。这个调用的执行,而不是跟踪,是pct和tct(跟踪到下一个调用或返回)之间的唯一区别。在源代码模式下,可以将一个源代码行与多个程序集指令相关联。pct命令不会在与当前源代码行关联的调用或返回指令处停止。
最新文章
- 关于STM32的FLASH操作【转载】
- Hello Mybatis 02 mybatis generator
- 【POJ 1112】Team Them Up!(二分图染色+DP)
- 最小生成树 2429: [HAOI2006]聪明的猴子
- linux进程用户内存空间和内核空间
- Mono for Android开发调研笔记
- WP8.1开发对图片进行裁剪(截取)一部分
- Java之异常处理,日期处理
- 视觉SLAM
- 【WebGL】《WebGL编程指南》读书笔记——第4章
- 关于php中 json_encode 编码成json数据参数说明
- JDK1.8 HashMap--treeifyBin()方法
- vue之综合Demo:打沙袋
- preparedstatement 为什么可以防止sql注入
- 安装APK的错误码(PackageManager.java)
- 在onResume()中调用getIntent()得不到Extra的问题
- hibernate的枚举注解@Enumerated
- golang学习之defer
- Linux下使用Opencv打开笔记本摄像头
- Mockplus设计大赛获奖选手专访 | Intimate:你的专属密友音乐播放器
热门文章
- CF1109F Sasha and Algorithm of Silence's Sounds LCT、线段树
- 阿里巴巴 Java 开发手册(四): OOP 规约
- Android.mk简介:
- kali之nmap
- Gson含抽象类的反序列化
- 【转载】C#中使用decimal.TryParse方法将字符串转换为十进制decimal类型
- Java 之 cookie 记住用户登录时间案例
- MySQL CentOS7 手动安装
- 升级tinyhttpd-0.1.0,让其支持网页显示图像
- Alpha_4