網頁

OzCode - 最強大的 Visual Studio 偵錯套件

OzCode - 最強大的 Visual Studio 偵錯套件

我們都知道Visual Studio是地表最強的開發工具,其中與開發人員最相關的二個功能是開發時的IntelliSense與除錯用的IntelliTrace,IntelliTrace雖然強大好用,但是要Ultimate版才有完善支援,當然,那是一筆不小的費用。那麼除了升級為Ultimate版本外,是否還有其他好的選擇?是的,OzCode就是一套筆者要介紹給各位的Visual Studio Debug擴充程式。

OzCode

好的除錯工具帶你上天堂。OzCode是一套可以解決除錯上煩腦的強大套件。

OzCode正在舉辦一個除錯測試,參加者有機會贏得一套OzCode授權,以下範例以除錯測試中的範例來示範,讓各位讀者看看使用OzCode的前後差異。

OzCode Challenge

第一題

void Main()
{
 bool flag = true;
 StringBuilder sb = new StringBuilder();
 sb.Append("foo " + flag == false + " Bar");
 Console.WriteLine (sb.ToString());
}   
  
OzCode 第一題

LINQPad執行結果是false,但是why?

我們看看在Visual Studio下使用IntelliTrace的結果:

IntelliTrace-1
IntelliTrace-2

雖然對於變數內容的變化,我們可以很容易的透過區域變數視窗來觀察,但對於運算式的運算過程IntelliTrace就比較幫不上忙。我們還是只知道結果是false,但為何是false還是有看沒有懂。

第二題

void Main()
{
 var riddle = new Riddle();
 ((Counter)riddle.counter).Increment();
 Console.WriteLine (((Counter)riddle.counter).Count);
}

// Define other methods and classes here
struct Counter
{
 private int x;
 public void Increment() { this.x++; }
 public int Count { get { return this.x; } }
}

class Riddle
{
 public readonly object counter = new Counter();
}   
  
OzCode 第二題
IntelliTrace-3

執行結果為0,但為什麼為是0呢?

第三題

void Main()
{
 bool boolean1 = true;
 bool boolean2 = true;
 bool boolean3 = false;
 
 if (boolean1 = boolean2 && boolean3)
  Console.WriteLine ("true");
 else
  Console.WriteLine ("false");
}   
  
OzCode 第三題

執行結果為false

傳統偵錯的問題

從上述的幾個情境上我們可以看到,中斷點也好,IntelliTrace也罷,都沒能幫上太大的忙,原因是Visual Studio裡的偵錯模式注重在最後的執行結果,也就是每一行執行後的結果,然後開發人員再檢查執行結果是否有誤來判斷問題。

但在除錯進行的過程式常常是這樣:「明明結果不對,但就是找不出來程式那邊的邏輯寫錯。」如同上面的範例,結果就是和你想的不一樣,那要怎麼除錯呢?

OzCode的強大功能就在這裡,它注重執行過程的偵錯訊息,並提供可視覺化的偵錯訊息。

使用OzCode偵錯

執行至中斷點後請按F10,才會有以下說明的效果。

Simplify

第一題,透過OzCode的Simplify功能,我們能很快發現,這是個操作優先順序的問題,運算式會是這樣運算:(("Foo" + flag) == (false + "Bar"))

Show All Instances
All Boxed Instances of Counter

第二題,可以透過OzCode的Show All Instances來觀察執行個執個體目前在記憶體中的狀態。這樣就能觀察到執行個體在記憶體中的boxing與boxed的狀態。

Simplify

第三題,透過OzCode的Simplify功能,可以瞭解運算式「&&」有較高優先順序並先執行運算。

由以上例子可以看到OzCode提供了更視覺化的偵錯方式,尤其在需要觀察執行(運算)過程時,更是一大利器。當然,OzCode還有其他許多好用的功能。你可以下載 30 天試用版感受一下它帶來的便利。

目前前5000位購買者可以得到30%折扣。或是如果你是Academic、Open-Source Project或Microsoft MVP等身份,可申請各種優惠授權。請參考Purchase的說明。

2 則留言:

  1. 第一题一看就是false啊。等号左边以foo开头,等号右边以false开头,当然不一样啊,还需要侦错呀。。

    回覆刪除
  2. gqq nbig, 這一看就知道是要舉例用的,文章也不會閱讀重點。雞蛋裡挑骨頭不會顯得你有多厲害,做這種大家都知道的評論只會覺得你來亂的。

    回覆刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。