sx、sxd、sxe、sxi、sxn、sxr、sx- (設定例外狀況)
sx命令會控制偵錯工具在偵錯的應用程式發生例外狀況時,或發生特定事件時所採取的動作。
sx
sx{e|d|i|n} [-c "Cmd1"] [-c2 "Cmd2"] [-h] {Exception|Event|*}
sx- [-c "Cmd1"] [-c2 "Cmd2"] {Exception|Event|*}
sxr
參數
-c 「Cmd1」
指定例外狀況或事件發生時所執行的命令。 不論這個例外狀況是否中斷偵錯工具,當第一次處理這個例外狀況的機會發生時,就會執行此命令。 您必須以引號括住 Cmd1 字串。 如果您以分號分隔這些命令,此字串可以包含多個命令。 -c 與引號命令字串之間的空格是選擇性的。
-c2「Cmd2」
指定當例外狀況或事件發生且第一個機率未處理時所執行的命令。 不論這個例外狀況是否中斷偵錯工具,當第二次處理這個例外狀況的機會發生時,就會執行此命令。 您必須以引號括住 Cmd2 字串。 如果您以分號分隔這些命令,此字串可以包含多個命令。 -c2 與引號命令字串之間的空格是選擇性的。
-h
變更指定事件的處理狀態,而不是其中斷狀態。 如果 Event 是 cc、 hc、 bpec或 ssec,則不需要使用 -h 選項。
例外狀況
指定命令在目前弧度中作用的例外狀況編號。
事件
指定命令作用的事件。 這些事件是由簡短縮寫所識別。 如需事件清單,請參閱 控制例外狀況和事件。
*
影響未針對 sx明確命名的所有例外狀況。 如需明確命名的例外狀況清單,請參閱 控制例外狀況和事件。
環境
模式 | 使用者模式、核心模式 |
目標 | 僅限即時偵錯 |
平台 | 全部 |
其他資訊
如需中斷狀態和處理狀態、所有事件代碼的描述、所有事件的預設狀態清單,以及控制此狀態的其他方法的詳細資訊,請參閱 控制例外狀況和事件。
備註
sx命令會顯示目前進程的例外狀況清單,以及所有非例外狀況事件的清單,並針對每個例外狀況和事件顯示偵錯工具的預設行為。
sxe、sxd、sxn和sxi命令會控制每個例外狀況和事件的偵錯工具設定。
sxr命令會將所有例外狀況和事件篩選狀態重設為預設設定。 例如,命令會清除並中斷,並繼續選項會重設為其預設設定。
sx-命令不會變更指定例外狀況或事件的處理狀態或中斷狀態。 如果您想要變更與特定事件相關聯的第一個機率命令或第二個機率命令,但不想變更任何其他專案,可以使用此命令。
如果您包含-h選項 (,或已指定 cc、hc、bpec或ssec事件) 、sxe、sxd、sxn和sxi命令,則控制例外狀況或事件的處理狀態。 在所有其他情況下,這些命令會控制例外狀況或事件的 中斷狀態 。
當您設定中斷狀態時,這些命令會有下列效果:
命令 | 狀態名稱 | Description |
---|---|---|
sxe | 中斷 (已啟用) |
發生這個例外狀況時,目標會在啟動任何其他錯誤處理常式之前,立即中斷偵錯工具。 這種處理稱為 第一次處理 。 |
sxd | 第二個機會中斷 (停用) |
雖然顯示訊息) ,但偵錯工具不會中斷此類型的第一個機率例外狀況 (。 如果其他錯誤處理常式未解決此例外狀況,則執行會停止,而目標會中斷至偵錯工具。 這種處理稱為 第二次機率 處理。 |
sxn | 輸出 (通知) |
發生此例外狀況時,目標應用程式完全不會中斷偵錯工具。 不過,會顯示通知使用者此例外狀況的訊息。 |
sxi | 忽略 | 發生此例外狀況時,目標應用程式完全不會中斷偵錯工具,而且不會顯示任何訊息。 |
當您設定處理狀態時,這些命令會有下列效果:
命令 | 狀態名稱 | Description |
---|---|---|
sxe | 已處理 | 當繼續執行時,事件會被視為已處理。 |
sxd,sxn,sxi | 未處理 | 在執行繼續時,事件會被視為未處理。 |
您可以使用 -h 選項搭配例外狀況,而非事件。 使用此選項搭配 ch、 bpe或 sse 分別設定 hc、 bpec或 ssec的處理狀態。 如果您使用 -h 選項搭配任何其他事件,則沒有任何作用。
使用 -c 或 -c2 選項搭配 hc、 bpec或 ssec ,分別將指定的命令與 ch、 bpe或 sse產生關聯。
在下列範例中, sxe 命令是用來設定存取違規事件的中斷狀態,以在第一個機率中斷,以及設定將在該點執行的第一個機率命令,以 r eax。 接著, sx- 命令會用來將第一個機率命令變更為 r ebx,而不會變更處理狀態。 最後,會顯示 sx 輸出的一部分,指出存取違規事件的目前設定:
0:000> sxe -c "r eax" av
0:000> sx- -c "r ebx" av
0:000> sx
av - Access violation - break - not handled
Command: "r ebx"
. . .