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)命令。
- StartAddress
指定執行應開始的地址。如果不使用startaddress,則從指令指針指向的指令開始執行 - Count
指定停止前要單步執行的指令或源行數。每個步驟在調試器命令窗口中顯示為單獨的操作。默認值為1。 - Command
指定要在執行步驟后執行的調試器命令。此命令在顯示標准p結果之前執行。如果還使用count,則在所有步驟完成后(但在顯示最后一步的結果之前)執行指定的命令。
當您指定count時,每個指令都會在單步執行時顯示出來。如果調試器在單步執行時遇到調用指令或中斷,則被調用的子例程將完全執行,除非遇到斷點。在調用或中斷后的下一條指令中,控件將返回給調試器。每個步驟執行單個匯編指令或單個源行,這取決於調試器是處於匯編模式還是源模式。使用l+t和l-t命令或windbg工具欄上的按鈕在這些模式之間切換。當您在windbg中多次快速單步執行時,調試信息窗口將在每個步驟之后更新。如果此更新導致響應時間變慢,請使用.suspend_ui (Suspend WinDbg Interface)暫時暫停刷新這些窗口。
pa (Step to Address)
pa命令執行程序,直到到達指定的地址,顯示每個步驟。
用戶模式:
[~Thread] pa [r] [= StartAddress] StopAddress ["Command"]
內核模式:
pa [r] [= StartAddress] StopAddress ["Command"]
參數:
- Thread
指定要繼續執行的線程。所有其他線程都被凍結。只能在用戶模式下指定線程。
- r
打開和關閉寄存器和標志的顯示。默認情況下,將顯示寄存器和標志。可以使用pr、tr或.prompt_allow-reg命令禁用寄存器顯示。所有這三個命令都控制着相同的設置,您可以使用它們中的任何一個來覆蓋以前對這些命令的任何使用。也可以使用l-os命令禁用寄存器顯示。此設置與其他三個命令不同。要控制顯示哪些寄存器和標志,請使用rm (Register Mask)命令。
- StartAddress
指定執行應開始的地址。如果不使用startaddress,則從指令指針指向的指令開始執行。
- StopAddress
指定停止執行的地址。此地址必須與指令的確切地址匹配。
- Command
指定要在執行步驟后執行的調試器命令。此命令在顯示標准p結果之前執行。如果還使用count,則在所有步驟完成后(但在顯示最后一步的結果之前)執行指定的命令。
pa命令使目標開始執行。此執行將繼續,直到到達指定的指令或遇到斷點。如果在內核模式下使用此命令,則當在任何虛擬地址空間中的指定虛擬地址處遇到指令時,執行將停止。在此執行期間,所有步驟都將顯式顯示。被調用函數被視為單個單元。因此,此命令的顯示與重復執行p(step)直到程序計數器到達指定地址時所看到的類似。
例如,下面的命令顯式地遍歷目標代碼,直到到達當前函數的返回地址。
0:000> pa @$ra
下面的示例演示如何使用pa命令和kb命令來顯示堆棧跟蹤:
0:000> pa 70b5d2f1 "kb"
pc (Step to Next Call)
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)
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。
ph命令使目標開始執行。此執行將繼續執行,直到達到分支指令或遇到斷點為止。如果程序計數器已經在分支指令上,則執行整個分支指令。返回此分支指令后,繼續執行,直到到達另一個分支指令。調用的這種執行而不是跟蹤是ph和th(跟蹤到下一個分支指令)之間的唯一區別。在源模式下,可以將一個源行與多個匯編指令關聯。ph命令不會在與當前源行關聯的分支指令處停止。
pt (Step to Next Return)
Pt命令執行程序,直到達到返回指令。
用戶模式:
[~Thread] pt [r] [= StartAddress] [Count] ["Command"]
內核模式:
pt [r] [= StartAddress] [Count] ["Command"]
參數:
- Thread
指定要繼續執行的線程。所有其他線程都被凍結。只能在用戶模式下指定線程。 - r
打開和關閉寄存器和標志的顯示。默認情況下,將顯示寄存器和標志。可以使用pr、tr或.prompt_allow-reg命令禁用寄存器顯示。所有這三個命令都控制着相同的設置,您可以使用它們中的任何一個來覆蓋以前對這些命令的任何使用。也可以使用l-os命令禁用寄存器顯示。此設置與其他三個命令不同。要控制顯示哪些寄存器和標志,請使用rm (Register Mask)命令。 - StartAddress
指定調試器開始執行的地址。否則,調試器從指令指針指向的指令開始。 - Count
指定要停止此命令必須遇到的返回指令數。默認值為1。 - Command
指定要在執行步驟后執行的調試器命令。此命令在顯示標准pt結果之前執行。如果還使用count,則在所有步驟完成后(但在顯示最后一步的結果之前)執行指定的命令。
pt命令將導致目標開始執行。 此執行將繼續,直至返回達到指令或遇到斷點。如果已經打開的程序計數器返回執行指令,整個返回。 返回此返回后,執行將繼續,直到另一個返回為止。 此執行,而不是跟蹤,在調用之間的唯一區別是pt並 tt (到下一步返回的 Trace)。源模式中,可以將一個源行與多個程序集指令相關聯。 pt命令不會停止處返回與當前的源行相關聯的指令。
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命令不會在與當前源代碼行關聯的調用或返回指令處停止。