CDB 命令列選項
CDB 或 NTSD 的第一次用戶應該從使用 CDB 和 NTSD 進行偵錯一節開始。
CDB 命令列會使用下列語法:
cdb [ -server ServerTransport | -remote ClientTransport ]
[ -premote SmartClientTransport ] [-log{a|au|o|ou} LogFile]
[-2] [-d] [-ddefer] [-g] [-G] [-hd] [-lines] [-myob] [-bonc]
[-n] [-o] [-s] [-v] [-w] [-cf "filename"] [-cfr "filename"] [-c "command"]
[-robp] [-r BreakErrorLevel] [-t PrintErrorLevel]
[ -x{e|d|n|i} Exception ] [-x] [-clines lines]
[-i ImagePath] [-y SymbolPath] [-srcpath SourcePath]
[-aExtension] [-failinc] [-noio] [-noinh] [-noshell] [-nosqm]
[-sdce] [-ses] [-sicv] [-sins] [-snc] [-snul] [-zp PageFile]
[-sup] [-sflags 0xNumber] [-ee {masm|c++}]
[-e Event] [-pb] [-pd] [-pe] [-pr] [-pt Seconds] [-pv]
[ -- | -p PID | -pn Name | -psn ServiceName | -z DumpFile | executable ]
[-cimp] [-isd] [-kqm] [-pvr] [-version] [-vf] [-vf:<opts>] [-netsyms:{yes|no}]
cdb -iae
cdb -iaec KeyString
cdb -iu KeyString
cdb -QR Server
cdb -wake pid
cdb -?
NTSD 命令行語法與 CDB 的語法相同:
ntsd [ -server ServerTransport | -remote ClientTransport ]
[ -premote SmartClientTransport ] [-log{a|au|o|ou} LogFile]
[-2] [-d] [-ddefer] [-g] [-G] [-hd] [-lines] [-myob] [-bonc]
[-n] [-o] [-s] [-v] [-w] [-cf "filename"] [-cfr "filename"] [-c "command"]
[-robp] [-r BreakErrorLevel] [-t PrintErrorLevel]
[ -x{e|d|n|i} Exception ] [-x] [-clines lines]
[-i ImagePath] [-y SymbolPath] [-srcpath SourcePath]
[-aExtension] [-failinc] [-noio] [-noinh] [-noshell] [-nosqm]
[-sdce] [-ses] [-sicv] [-sins] [-snc] [-snul] [-zp PageFile]
[-sup] [-sflags 0xNumber] [-ee {masm|c++}]
[-e Event] [-pb] [-pd] [-pe] [-pr] [-pt Seconds] [-pv]
[ -- | -p PID | -pn Name | -psn ServiceName | -z DumpFile | executable ]
[-cimp] [-isd] [-kqm] [-pvr] [-version] [-vf] [-vf:<opts>] [-netsyms:{yes|no}]
ntsd -iae
ntsd -iaec KeyString
ntsd -iu KeyString
ntsd -QR Server
ntsd -wake PID
ntsd -?
NTSD 與 CDB 之間的唯一差異在於 NTSD 繁衍新的控制台視窗,而 CDB 會繼承其叫用來源的視窗。 由於 start 命令也可以用來繁衍新的控制台視窗,因此下列兩個建構會提供相同的結果:
start cdb [parameters]
ntsd [parameters]
CDB 和 NTSD 命令行選項的描述如下。 只有 -remote、-server、-g 和 -G 選項會區分大小寫。 初始連字元可以取代為正斜線 (/)。 不採用任何其他參數的選項可以串連 -- 因此 cdb -o -d -G -g winmine 可以撰寫為 cdb -odGg winmine。
如果使用 -remote 或 -server 選項,則必須出現在命令行上的任何其他選項之前。 如果指定可執行檔,它必須出現在命令行的最後一個;可執行檔名稱之後的任何文字都會傳遞至可執行檔程式做為其本身的命令行參數。
參數
-伺服器 ServerTransport
建立可由其他調試程式存取的偵錯伺服器。 如需可能 ServerTransport 值的說明,請參閱啟用偵錯伺服器。 使用此參數時,它必須是命令行上的第一個參數。
-遠端 ClientTransport
建立偵錯用戶端,並連接到已經執行的偵錯伺服器。 如需可能 ClientTransport 值的說明,請參閱啟用偵錯用戶端。 使用此參數時,它必須是命令行上的第一個參數。
-premote SmartClientTransport
建立智慧型手機到已經執行的進程伺服器。 如需可能 SmartClientTransport 值的說明,請參閱啟用智慧型手機用戶端。
-阿拉伯數位
如果目標應用程式是 主控台應用程式,此選項會使它存在於新的控制台視窗中。 (預設是讓目標主控台應用程式與 CDB 或 NTSD 共用視窗。
--
偵錯客戶端伺服器運行時間子系統 (CSRSS)。 如需詳細資訊,請參閱 偵錯 CSRSS。
-一個 外延
設定預設擴充 DLL。 預設值為 userexts。 在 「a」 之後不得有空格,且不得包含.dll延伸模組。 如需設定此預設值的詳細資訊和其他方法,請參閱 載入調試程式擴充功能 DLL。
-bonc
如果指定此選項,調試程式會在會話開始時立即中斷目標。 當連線到目前可能未損入目標的偵錯伺服器時,這特別有用。
-c ” 命令 ”
指定要在啟動時執行的初始調試程式命令。 此命令必須以引弧括住。 您可以使用分號分隔多個命令。 (如果您有很長的命令清單,可能更容易將它們放在腳本中,然後使用 -c 選項搭配 $<、$、$><、$><、><$(執行腳本檔案)命令。
如果您要啟動偵錯用戶端,此命令必須適用於偵錯伺服器。 不允許用戶端特定命令,例如 .lsrcpath 。
-cf ” filename ”
指定文稿檔案的路徑和名稱。 啟動調試程序之後,就會立即執行此腳本檔案。 如果 檔名 包含空格,則必須以引弧括住。 如果省略路徑,則會假設目前的目錄。 如果未使用 -cf 選項,則目前目錄中的檔案ntsd.ini會當做腳本檔案使用。 如果檔案不存在,則不會發生錯誤。 如需詳細資訊,請參閱 使用腳本檔案。
-cfr ” filename ”
指定文稿檔案的路徑和名稱。 此腳本檔案會在調試程序啟動后立即執行,而且每當重新啟動目標時。 如果 檔名 包含空格,則必須以引弧括住。 如果省略路徑,則會假設目前的目錄。 如果檔案不存在,則不會發生錯誤。 如需詳細資訊,請參閱 使用腳本檔案。
-cimp
指示CDB/NTSD 從 DbgSrv 隱含命令行開始,而不是要執行的明確進程。 此選項是 dbgsrv -pc 的用戶端。
-clines 線
設定可在遠端偵錯期間存取之命令歷程記錄中的大約命令數目。 如需詳細資訊,以及變更此號碼的其他方式,請參閱 使用調試程式命令。
-d
將此調試程式的控制權傳遞至核心調試程式。 如果您要偵錯 CSRSS,即使 未指定 -d ,此控件重新導向一律為使用中。 (此選項無法在遠端偵錯期間使用 -- 請改用 -ddefer 。)如需詳細資訊,請參閱 從核心調試程式控制使用者模式調試程式 。 此選項不能與 -ddefer 選項或 -noio 選項搭配使用。
注意 如果您使用 WinDbg 作為核心調試程式,此案例中無法使用 WinDbg 的許多熟悉功能。 例如,您無法使用 [局部變數] 視窗、[反組譯碼] 視窗或 [呼叫堆棧] 視窗,而且您無法逐步執行原始程式碼。 這是因為 WinDbg 只會作為在目標電腦上執行的調試程式 (NTSD 或 CDB) 的檢視器。
-ddefer
除非已連接偵錯客戶端,否則將此調試程式的控制權傳遞至核心調試程式。 (這是可從偵錯伺服器使用的 -d 變化。如需詳細資訊,請參閱從核心調試程式控制使用者模式調試程式。 此選項不能與 -d 選項或 -noio 選項搭配使用。
-e 事件
向調試程式發出已發生指定事件的訊號。 只有在以程式設計方式啟動調試程式時,才會使用此選項。
-ee {masm|c++}
設定預設表達式評估工具。 如果 指定masm ,則會使用MASM表示式語法。 如果 指定 c++ ,則會使用C++運算式語法。 如果省略 -ee 選項,則會使用MASM表示式語法做為預設值。 如需詳細資訊,請參閱 評估表達式 。
-failinc
讓調試程式忽略任何可疑的符號。 偵錯使用者模式或內核模式迷你傾印檔案時,此選項也會防止調試程式載入無法對應映像的任何模組。 如需控制此動作的詳細資訊和其他方法,請參閱 SYMOPT_EXACT_SYMBOLS。
-g
忽略目標應用程式中的初始斷點。 除非已設定另一個斷點,否則此選項會導致目標應用程式在啟動之後繼續執行,否則CDB會附加至它。 如需詳細資訊,請參閱 初始斷點 。
-G
忽略進程終止時的最終斷點。 根據預設,CDB 會在映像執行過程中停止。 此選項會導致CDB在子系終止時立即結束。 這與輸入命令 sxd epr 的效果相同。 如需詳細資訊,請參閱 控制例外狀況和事件。
-硬碟
指定不應該使用偵錯堆積。 如需詳細資訊,請參閱 使用CDB 對使用者模式進程進行偵錯。
-我 ImagePath
指定產生錯誤的可執行檔案位置。 如果路徑包含空格,則應該以引弧括住。
-iae
將CDB安裝為驗屍調試程式。 如需詳細資訊,請參閱 啟用事後偵錯。
如果此動作成功,則不會顯示任何訊息;如果失敗,則會顯示錯誤訊息。
-iae 參數不得搭配任何其他參數使用。 此命令實際上不會啟動CDB。
-iaec KeyString
將CDB安裝為驗屍調試程式。 KeyString 的內容將會附加至 AeDebug 登錄機碼的結尾。 如果 KeyString 包含空格,則必須以引弧括住。 如需詳細資訊,請參閱 啟用事後偵錯。
如果此動作成功,則不會顯示任何訊息;如果失敗,則會顯示錯誤訊息。
-iaec 參數不得與任何其他參數搭配使用。 此命令實際上不會啟動CDB。
-isd
開啟任何程式建立CREATE_IGNORE_SYSTEM_DEFAULT旗標。
-iu KeyString
將調試程式遠端登錄為 URL 類型,讓使用者可以使用 URL 自動啟動調試程式遠端用戶端。 KeyString 格式為 remdbgeng://RemotingOption
。 RemotingOption 是字串,定義啟用偵錯用戶端主題中所定義的傳輸通訊協定。 如果此動作成功,則不會顯示任何訊息;如果失敗,則會顯示錯誤訊息。
-iu 參數不得搭配任何其他參數使用。 此命令實際上不會啟動CDB。
-kqm
以無訊息模式啟動CDB/NTSD。
-線
啟用原始程式行偵錯。 如果省略此選項, 則必須使用 .lines (切換來源行支援) 命令,才能允許來源偵錯。 如需控制這個的其他方法,請參閱 SYMOPT_LOAD_LINES。
-log{a|au|o|ou} LogFile
開始將資訊記錄到記錄檔。 如果指定的檔案已經存在,則會在使用 -logo 時覆寫,如果使用 -loga,則會將輸出附加至檔案。 -logau 和 -logou 選項分別運作類似 -loga 和 -logo,不同之處在於記錄檔是 Unicode 檔案。 如需詳細資訊,請參閱 在CDB中保留記錄檔。
-myob
如果版本與dbghelp.dll不符,調試程式將會繼續執行。 (如果沒有 -myob 參數,這被視為嚴重錯誤。
-n
Noisy 符號載入:啟用符號處理程式的詳細信息輸出。 如需詳細數據,以及控制此動作的其他方法,請參閱 SYMOPT_DEBUG。
-netsyms {yes|no}
允許或不允許從網路路徑載入符號。
-noinh
防止調試程式建立的進程從調試程序繼承句柄。 如需控制這項功能的其他方法,請參閱 使用CDB對使用者模式進程進行偵錯。
-noio
防止偵錯伺服器用於輸入或輸出。 輸入只會從偵錯用戶端接受(加上 -c 命令行選項所指定的任何初始命令或命令腳本)。
所有輸出都會導向至偵錯用戶端。 如果 NTSD 用於伺服器,則完全不會建立任何控制台視窗。 如需詳細資訊,請參閱 啟用偵錯伺服器。 此選項不能與 -d 選項或 -ddefer 選項搭配使用。
-noshell
禁止所有 .shell 命令。 只要調試程式正在執行,這項禁令就會持續,即使開始新的偵錯會話也一樣。 如需詳細資訊,以及停用 .shell 命令的其他方式,請參閱使用殼層命令。
-nosqm
停用遙測數據收集和上傳。
-o
偵錯目標應用程式啟動的所有進程(子進程)。 根據預設,您所偵錯的進程將會如正常執行一樣執行。 如需控制這項功能的其他方法,請參閱 使用CDB對使用者模式進程進行偵錯。
-p PID
指定要偵錯的十進位進程標識碼。 這是用來偵錯已經執行的進程。 如需詳細資訊,請參閱 使用CDB對使用者模式進程進行偵錯。
-鉛
防止調試程式在附加至目標進程時要求初始中斷。 如果應用程式已暫停,或您想要避免在目標中建立中斷線程,這非常有用。
-pd
導致目標應用程式不會在偵錯會話結束時終止。 如需詳細資訊,請參閱 在CDB 中結束偵錯會話。
-體育
表示目標應用程式已進行偵錯。 如需詳細資訊,請參閱 重新附加至目標應用程式 。
-pn 名字
指定要偵錯的進程名稱。 (此名稱必須是唯一的。這是用來偵錯已經執行的進程。
-公關
讓調試程式在附加至目標進程時啟動執行的目標進程。 如果應用程式已暫停,而且您希望應用程式繼續執行,這非常有用。
-psn ServiceName
指定要偵錯之進程中包含的服務名稱。 這是用來偵錯已經執行的進程。
-鉑 秒
指定中斷逾時,以秒為單位。 預設值是 30。 如需詳細資訊,請參閱 控制目標 。
-光伏
指定調試程式應該以非侵入方式附加至目標進程。 如需詳細資訊,請參閱非侵入式偵錯(使用者模式)。
-pvr
運作方式類似 -pv ,不同之處在於目標進程並未暫停。
-QR 伺服器
列出在指定之網路伺服器上執行的所有偵錯伺服器。 [伺服器] 之前的雙反斜杠 (\) 是選擇性的。 如需詳細資訊,請參閱搜尋偵錯伺服器。
-QR 參數不能與任何其他參數搭配使用。 此命令實際上不會啟動CDB。
-r BreakErrorLevel
指定會導致目標進入調試程式的錯誤層級。 這是等於 0、1、2 或 3 的十進位數。 可能值如下所示:
值 | 持續性 | 意義 |
---|---|---|
0 |
NONE |
請勿中斷任何錯誤。 |
1 |
錯誤 |
中斷錯誤層級偵錯事件。 |
2 |
MINORERROR |
中斷 MINORERROR 和錯誤層級偵錯事件。 |
3 |
警告 |
在 WARNING、MINORERROR 和 ERROR 層級偵錯事件時中斷。 |
此錯誤層級在已核取Microsoft Windows 的組建中才有意義。 預設值是 1秒。 在 Windows 10 版本 1803 之前,檢查過的組建可在舊版 Windows 上使用。
-robp
這可讓CDB在唯讀記憶體頁面上設定斷點。 (預設值是讓這類作業失敗。
-s
停用延遲符號載入。 這會讓進程啟動變慢。 如需詳細數據,以及控制此動作的其他方法,請參閱 SYMOPT_DEFERRED_LOADS。
-sdce
讓調試程式在符號載入期間顯示 [ 檔案存取錯誤 ] 對話框。 如需詳細數據,以及控制此動作的其他方法,請參閱 SYMOPT_FAIL_CRITICAL_ERRORS。
-ses
讓調試程式對所有符號檔執行嚴格的評估,並忽略任何可疑的符號。 如需控制此動作的詳細資訊和其他方法,請參閱 SYMOPT_EXACT_SYMBOLS。
-sflags 0x 數
一次設定所有符號處理程序選項。 Number 應該是前置詞為 0x 的十六進位數位 -- 允許沒有 0x 的十進位數位,但符號選項是二進位旗標,因此建議使用十六進位。 此選項應該小心使用,因為它會覆寫所有符號處理程序預設值。 如需詳細資訊,請參閱 設定符號選項。
-sicv
導致符號處理程式忽略 CV 記錄。 如需詳細數據,以及控制此動作的其他方法,請參閱 SYMOPT_IGNORE_CVREC。
-罪
讓調試程式忽略符號路徑和可執行的映像路徑環境變數。 如需詳細資訊,請參閱 SYMOPT_IGNORE_NT_SYMPATH。
-snc
讓調試程式關閉C++轉譯。 如需控制此動作的詳細資訊和其他方法,請參閱 SYMOPT_NO_CPP。
-snul
停用未限定名稱的自動符號載入。 如需詳細數據,以及控制此動作的其他方法,請參閱 SYMOPT_NO_UNQUALIFIED_LOADS。
-srcpath SourcePath
指定來源檔案搜尋路徑。 使用分號分隔多個路徑(;)。 如果路徑包含空格,則應該以引弧括住。 如需詳細資訊,以及變更此路徑的其他方式,請參閱 來源路徑。
-支援
讓符號處理程式在每個符號搜尋期間搜尋公用符號數據表。 如需控制此動作的詳細資訊和其他方法,請參閱 SYMOPT_AUTO_PUBLICS。
-t PrintErrorLevel
指定會導致調試程序顯示錯誤訊息的錯誤層級。 這是等於 0、1、2 或 3 的十進位數。 可能值如下所示:
值 | 持續性 | 意義 |
---|---|---|
0 |
NONE |
不要顯示任何錯誤。 |
1 |
錯誤 |
顯示錯誤層級偵錯事件。 |
2 |
MINORERROR |
顯示 MINORERROR 和錯誤層級偵錯事件。 |
3 |
警告 |
顯示WARNING、MINORERROR和 ERROR 層級偵錯事件。 |
此錯誤層級在已核取Microsoft Windows 的組建中才有意義。 在 Windows 10 版本 1803 之前,檢查過的組建可在舊版 Windows 上使用。 預設值是 1秒。
-v
從調試程式啟用詳細信息輸出。
-版本
列印調試程式版本字串。
-vf
啟用預設的 ApplicationVerifier 設定。
-vf: <選擇>
啟用指定的 ApplicationVerifier 設定。
-w
指定在個別 VDM 中偵錯 16 位應用程式。
-喚醒 PID
導致睡眠模式結束,而使用者模式調試程式的進程標識碼是由 PID 所指定。 此命令必須在睡眠模式期間於目標計算機上發出。 如需詳細資訊,請參閱 從核心調試程式控制使用者模式調試程式 。
-wake 參數不應與任何其他參數搭配使用。 此命令實際上不會啟動CDB。
-x{e|d|n|i} 例外狀況
控制發生指定事件時的調試程序行為。 Exception 可以是例外狀況號碼或事件碼。 您可以多次指定此選項來控制不同的事件。 如需控制這些設定的其他方法的詳細資訊,請參閱 控制例外狀況和事件 。
-x
停用存取違規例外狀況的第一次機會中斷。 第二次發生存取違規會中斷至調試程式。 這與 -xd av 相同。
-y SymbolPath
指定符號搜尋路徑。 使用分號分隔多個路徑(;)。 如果路徑包含空格,則應該以引弧括住。 如需詳細資訊,以及變更此路徑的其他方式,請參閱 符號路徑。
-z DumpFile
指定要偵錯的損毀傾印檔案名稱。 如果路徑和檔名包含空格,則必須以引弧括住。 可以一次開啟數個傾印檔案,方法是包含多個 -z 選項,後面接著不同的 DumpFile 值。 如需詳細資訊,請參閱 分析使用者模式傾印檔案。
-zp PageFile
指定修改的頁面檔名稱。 如果您要偵錯傾印檔案,而且想要使用 .pagein (記憶體中的頁面) 命令, 這會很有用。 您無法搭配標準 Windows 頁面檔案使用 -zp ,只能使用特別修改的頁面檔案。
可執行
指定可執行程式的命令列。 這可用來啟動新的進程並對其進行偵錯。 這必須是命令行上的最後一個專案。 可執行檔名稱之後的所有文字都會傳遞至可執行檔作為其自變數字串。
-?
顯示命令行說明文字。
當您從 [開始] 啟動調試程式時 |執行 或從 [命令提示字元] 視窗,在應用程式檔名之後指定目標應用程式的自變數。 例如:
cdb myexe arg1arg2