歡迎來到c#的奇妙天空,在這裡,希望你能獲得你想獲得的東西,.我們真誠希望能給你帶來巨大的幫助,帶你進入另外乙個廣闊的空間。
come on. follow me and then u can win!
同linux下的gnu c ++ 工具中的gdb類似,c#提供了乙個命令列除錯程式"cordbg.exe",通過這個程式你可以很輕鬆的除錯你的c#應用程式,本文在下面不可能完全給你介紹cordbg的功能,我只是希望能通過本文的介紹,能讓你獲得一些的東西。能對你有所幫助,對我來說是一件很高興的事情。廢話還是少說!
cordbd: microsoft (r) common language runtime test debugger shell
我暫時不定義這個東東,我們一步一步的看下來:
我的機器配置:win2k professional+iis 5.0+microsoft .net framework sdk(beta2)
我們來開始乙個簡單的的程式:
test-1.cs
/* 'data:2001-12-13
'author:sparon
'filename:test-1.cs
'one csharp test program
*/ using system;
class test_1 }
上面這個程式是極其簡單的,後面的文章中我將用乙個比較複雜的例子來除錯。我們現在一步步的開始吧!
不過請注意我使用"/*… …*/"來標記了注釋和一些相關文字的說明。
開始->執行->cmd,ok,現在開啟了乙個dos視窗,編譯你的c#程式。(下面的所有輸入動作是乙個整體的除錯過程,請注意不要混淆我加在後面的注釋。而且也請依照顏色來判斷那些是我輸入的資料,那些是計算機輸出的資料)
除錯開始:
第一步:編譯上面的程式
e:/cs>csc /debug test-1.cs
/* 注意這裡我在編譯這個test-1.cs是加了 "debug"這個引數的(這個debug後面的引數就請你老人家自己勤快一下,看看msdn),如果沒有什麼錯誤的話我們繼續。需要提醒大家一點的是有的使用者的系統path中沒有指定csc.exe所在的位置,在執行"csc.exe"的時候,未必能夠找到,那個時候你就必須指定csc.exe的路徑,比如我的csc.exe的路徑就是:"e:/program files/microsoft.net/frameworksdk/bin/cordbg.exe",說這麼一些廢話其實是因為有的時候在安裝了vs7(beta 2)的電腦上不能直接呼叫這個東西。
編譯過後用dir查一下你的檔案路徑,除了多了乙個test-1.exe外還,多了另外乙個test-1.pdb,這是乙個儲存除錯資訊的文件。
*/ 第二步:裝載你的程式;(下面就是你裝載乙個程式後系統輸出的資訊)
第三步:除錯你的程式;(下面的出現的將是除錯程式的時候所有的**,請注意我的注釋是加在後面的)
(cordbg)sh 18
001: /*
002: 'data:2001-12-13
003: 'author:sparon
004: 'one csharp test program
005: */
006: using system;
007: class test_1
008:
018: }
/*"sh" 命令是檢視被除錯程式源**的,其實這個源**還是從test-1.cs中裝載的,如果你的test-1.cs不存在的話,在裝載被除錯的程式的時候會出現如下錯誤**:
"error loading source file 'e:/cs/test-1.cs': file not found"
當然程式還是可以執行的。只不過原來的最後一行的c#**顯示,變成了彙編**的顯示。關於彙編方式的顯示我將在後面的文章中加以介紹。
*/ (cordbg) b 12
breakpoint #1 has bound to e:/cs/test-1.exe.
#1 e:/cs/test-1.cs:12 main+0x0(il) [active]
… …
/*通過b 命令設定了程式斷點,天啦!你不要告訴我連什麼是斷點都不知道喲。如果你不知道的話,那麼老大你還是不要看了吧。
設定斷點除錯程式除錯程式最重要的乙個方法
b 命令也可以檢視所有已經被設定的斷點,如下所示
*/ (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]
(cordbg) con
please enter your name. thanks!
break at #2 e:/cs/test-1.cs:13 main+0xa(il) [active]
013: str=console.readline();
/*
con 命令表示繼續執行程式**,一直執行到下乙個斷點,本來程式被裝載後預設設定了乙個斷點,在使用sh命令察看源**的地方某行**的序號被加了乙個"*",這行**就算是系統預設的斷點設定。
另外有個"next" 命令也可以用來除錯,但是表示執行到下一行,而不是下乙個斷點行。請注意區分,你也可以實際的操作來看看具體的效果
*/ (cordbg) con
sparon
break at #3 e:/cs/test-1.cs:14 main+0x10(il) [active]
014: console.writeline("------------------------------------/r/n");
(cordbg) p str
str=(0x00ba3414) "sparon"
/*
並且利用"p" 命令列印出了變數"str"中的資料,在除錯程式的時候列印程式中的程式變數是很關鍵的動作。
*/ (cordbg) con
------------------------------------
dear sparon, welcome to csharp's world!
------------------------------------
[thread 0x5fb0] thread created.
[thread 0x59a8] thread exited.
process exited.
/* con執行下乙個斷點後,程式執行到結束。
*/
到這步為止,乙個最簡單的c#程式就通過cordbg通過最簡單的方式除錯完成了,在後面的文章中我將會給你展示更加複雜的程式的除錯
如何除錯你的C 程式
歡迎來到c 的奇妙天空,在這裡,希望你能獲得你想獲得的東西,我們真誠希望能給你帶來巨大的幫助,帶你進入另外乙個廣闊的空間。come on.follow me and then u can win 同linux下的gnu c 工具中的gdb類似,c 提供了乙個命令列除錯程式 cordbg.exe 通過...
如何除錯你的C 程式
歡迎來到c 的奇妙天空,在這裡,希望你能獲得你想獲得的東西,我們真誠希望能給你帶來巨大的幫助,帶你進入另外乙個廣闊的空間。come on.follow me and then u can win 同linux下的gnu c 工具中的gdb類似,c 提供了乙個命令列除錯程式 cordbg.exe 通過...
如何除錯你的C 程式
歡迎來到c 的奇妙天空,在這裡,希望你能獲得你想獲得的東西,我們真誠希望能給你帶來巨大的幫助,帶你進入另外乙個廣闊的空間。come on.follow me and then u can win 同linux下的gnu c 工具中的gdb類似,c 提供了乙個命令列除錯程式 cordbg.exe 通過...