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)命令。

    kāiguāncúnbiāozhìdexiǎnshì示 。 rènqíngkuàngxià下 , jiāngxiǎnshìcúnbiāozhì志 。 shǐ使 yòng用 p r 、 t r huò或 . p r o m p t _ a l l o w - r e g mìnglìngjìnyòngcúnxiǎnshì示 。 suǒyǒuzhèsānmìnglìngdōukòngzhìzhexiāngtóngdeshèzhì置 , nínshǐ使 yòngmenzhōngderènláigàiqiánduìzhèxiēmìnglìngderènshǐ使 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āngnínzhǐdìng定 c o u n t shí时 , měizhǐlìngdōuhuìzàidānzhíxíngshíxiǎnshì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"]

参数:

guǒtiáoshìzàidānzhíxíngshídàodiàoyòngzhǐlìnghuòzhōngduàn断 , bèidiàoyòngdechéngjiāngwánquánzhíxíng行 , chúfēidàoduàndiǎn点 。 zàidiàoyònghuòzhōngduànhòudexiàtiáozhǐlìngzhōng中 , kòngjiànjiāngfǎnhuígěitiáoshì器 。

  • 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ěizhòuzhíxíngdānhuìbiānzhǐlìnghuòdānyuánxíng行 , zhèjuétiáoshìshìchǔhuìbiānshìháishìyuánshì式 。 shǐ使 yòng用 l + t 和 l - t mìnglìnghuò或 w i n d b g gōnglánshàngdeànniǔzàizhèxiēshìzhījiānqiē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ìnglìngshǐ使 biāokāishǐzhíxíng行 。 zhíxíngjiāng续 , zhídàodàodiàoyòngzhǐlìnghuòdàoduàndiǎ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ìnglìngshǐ使 biāokāishǐzhíxíng行 。 zhíxíngjiāngzhíxíng行 , zhídàodàofēnzhīzhǐlìnghuòdàoduàndiǎnwéizhǐ止 。

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"]

内核模式:

guǒchéngshùjīngzàifēnzhīzhǐlìngshàng上 , zhíxíngzhěngfēnzhīzhǐlìng令 。 fǎnhuífēnzhīzhǐlìnghòu后 , zhíxíng行 , zhídàodàolìngfēnzhīzhǐlìng令 。 diàoyòngdezhèzhǒngzhíxíngérshìgēnzōngshì是 p h 和 t h ( gēnzōngdàoxiàfēnzhīzhǐlìng令 ) zhījiāndewéibié别 。

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,则在所有步骤完成后(但在显示最后一步的结果之前)执行指定的命令。

guǒchéngshùjīngzàidiàoyòngzhǐlìngshàng上 , zhíxíngzhěngdiàoyòng用 。 fǎnhuídiàoyònghòu后 , jiāngzhíxíng行 , zhídàodàolìngdiàoyòng用 。 zhègediàoyòngdezhíxíng行 , érshìgēnzōng踪 , shì是 P C 和 T C ( gēnzōngdàoxiàdiàoyòng用 ) zhījiāndewéibié别 。

pt命令将导致目标开始执行。 此执行将继续,直至返回达到指令或遇到断点。如果已经打开的程序计数器返回执行指令,整个返回。 返回此返回后,执行将继续,直到另一个返回为止。 此执行,而不是跟踪,在调用之间的唯一区别是pttt (到下一步返回的 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命令不会在与当前源代码行关联的调用或返回指令处停止。

最新文章

  1. 关于STM32的FLASH操作【转载】
  2. Hello Mybatis 02 mybatis generator
  3. 【POJ 1112】Team Them Up!(二分图染色+DP)
  4. 最小生成树 2429: [HAOI2006]聪明的猴子
  5. linux进程用户内存空间和内核空间
  6. Mono for Android开发调研笔记
  7. WP8.1开发对图片进行裁剪(截取)一部分
  8. Java之异常处理,日期处理
  9. 视觉SLAM
  10. 【WebGL】《WebGL编程指南》读书笔记——第4章
  11. 关于php中 json_encode 编码成json数据参数说明
  12. JDK1.8 HashMap--treeifyBin()方法
  13. vue之综合Demo:打沙袋
  14. preparedstatement 为什么可以防止sql注入
  15. 安装APK的错误码(PackageManager.java)
  16. 在onResume()中调用getIntent()得不到Extra的问题
  17. hibernate的枚举注解@Enumerated
  18. golang学习之defer
  19. Linux下使用Opencv打开笔记本摄像头
  20. Mockplus设计大赛获奖选手专访 | Intimate:你的专属密友音乐播放器

热门文章

  1. CF1109F Sasha and Algorithm of Silence's Sounds LCT、线段树
  2. 阿里巴巴 Java 开发手册(四): OOP 规约
  3. Android.mk简介:
  4. kali之nmap
  5. Gson含抽象类的反序列化
  6. 【转载】C#中使用decimal.TryParse方法将字符串转换为十进制decimal类型
  7. Java 之 cookie 记住用户登录时间案例
  8. MySQL CentOS7 手动安装
  9. 升级tinyhttpd-0.1.0,让其支持网页显示图像
  10. Alpha_4