首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 程式除錯實戰指南(二):Cordbg 命令列除錯器完整操作

     編輯:關於C語言

前言

承接上篇文章,本文實戰演示 .NET Framework SDK 內建的命令列除錯器 cordbg.exe 的核心指令操作流程,包含原始碼檢視、中斷點管理、變數監看、單步執行等實戰技巧。

除錯環境準備

  • 編譯時加入除錯資訊:csc /debug+ /optimize- Test-1.cs
  • 啟動除錯器:cordbg Test-1.exe
  • 原始碼檔案 (Test-1.cs) 必須存在於編譯時的相對路徑,否則僅能檢視反組譯碼

核心指令實戰演示

1. 檢視原始碼:sh (Source/Hide)


(cordbg) sh
// 顯示當前執行點附近的原始碼
// 若找不到 .cs 檔會報錯:Error loading source file '...': File not found

2. 設定/檢視中斷點:b (Breakpoint)


(cordbg) b 12                    // 在第 12 行設定中斷點
Breakpoint #1 has bound to E:\Cs\Test-1.exe.
#1 E:\Cs\Test-1.cs:12 Main+0x0(il) [active]

(cordbg) b                       // 列出所有中斷點
#1 E:\Cs\Test-1.cs:12 Main+0x0(il) [active]
#2 E:\Cs\Test-1.cs:13 Main+0xa(il) [active]
#3 E:\Cs\Test-1.cs:14 Main+0x10(il) [active]

3. 執行控制:con (Continue) / next (Step Over)


(cordbg) con                     // 執行到下一個中斷點
Please Enter Your Name. Thanks!
break at #2 E:\Cs\Test-1.cs:13 Main+0xa(il) [active]
013: str=Console.ReadLine();

(cordbg) next                    // 單步執行 (下一行,不進入函式)

差異:con 執行到下一中斷點;next 執行下一行 (Step Over)。

4. 變數監看:p (Print)


(cordbg) p str
str=(0x00ba3414) "龍山文化"

除錯關鍵動作:即時檢視變數實際值,驗證邏輯正確性。

5. 完整除錯會話流程


(cordbg) con
龍山文化                          // 使用者輸入
break at #3 E:\Cs\Test-1.cs:14 Main+0x10(il) [active]
014: Console.WriteLine("------------------------------------\r\n");

(cordbg) con
------------------------------------
Dear 龍山文化, Welcome To Csharp's World!
------------------------------------
[thread 0x5fb0] Thread created.
[thread 0x59a8] Thread exited.
Process exited.

常用指令速查表

指令功能別名/相關
b [行號/函式]設定中斷點break
b列出所有中斷點
cl [編號]清除中斷點clear
con繼續執行到下一中斷點continue
next單步執行 (Step Over)n
step單步進入 (Step Into)s
out跳出目前函式 (Step Out)
p [變數/運算式]列印變數值print
sh顯示原始碼source
where顯示呼叫堆疊callstack
threads列出所有執行緒
exit / q離開除錯器quit

實務建議

  • 現代開發請優先使用 Visual Studio / VS Code 圖形化除錯器,功能強大得多
  • cordbg 適用於:無 IDE 環境的伺服器、自動化測試腳本、教學示範 IL 層面運作
  • 原始碼檔案路徑必須與編譯時一致,建議使用專案相對路徑
  • 釋出版 (/debug-) 無法有效除錯,僅能看到反組譯碼
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved