家談vs 2010新的「intellitrace」功能
業內人士dan wahlin在dr. dobb's播客**發表文章稱,他日前在拉斯維加斯舉行的visual studio 2010發布儀式上發表講話,並且有機會遇見了他的好朋友ward bell。bell是ideablade公司副總裁並且是scott guthrie演講時的演示者之一。他發現了乙個名為「intellitrace」(智慧型跟蹤)的功能 ,提供了一種在除錯程序中捕捉資訊的方法。wahlin坐下來和bell簡單地聊了有關「intellitrace」能夠向.net開發人員提供什麼功能的事情。
wahlin問:告訴我有關intellitrace的事情
bell答:intellitrace是建在visual studio 2010中的乙個幾極好的歷史性的新的除錯工具。你可以把它想象為一種時間機,你可以在應用程式執行的時候記錄你的應用程式的事件,讓通過這個除錯工具在時間上向後移動和向前移動。
問:你什麼時候使用它?
答:你曾經遇到過一種像《滑坡與梯子》遊戲式**庫嗎?這種**庫中的一件事情可導致另一件事情的發生,另一件事情會導致下一件事情的發生,而你不知道到底在發生什麼事情。當你有乙個應用程式有許多鬆散耦合的元件,並且所有這些元件都是採用依賴注入方式建立的時候,這個問題很難處理的。你不能做靜態分析,因為它都是動態的,沒有任何事情是指向任何事情的。你今天要做什麼?你放置許多斷點,你走進去,你走過一些點,並且繼續走著,哦,我要向回走--我從**來的?
因此,當你開始的時候你就要設法記住在適當的點上停留。intellitrace允許你重放在應用程式執行時到底發生了什麼事情。我可以向前走,也可以向後退,它向我顯示所有時間的全部堆疊蹤跡。我甚至能夠看到來回傳送的引數和返回的值。
問:我在visual studio中如何設定它?
答:進入到工具 --> 選項 --> intellitrace。它在預設狀態下是啟用的,但是,僅捕捉事件,因為捕捉事件是便宜的。然而,當你開始跟蹤所有這些呼叫資訊時,真正的價值開始顯現出來了。你每一次除錯的時候,intellitrace都將彈出來,你在動態除錯的時候可以使用這個歷史性的除錯工具。假如我在那裡並且有乙個斷點,但是,我要備份和重新設計這個斷點,我可以使用intellitrace完成這個任務。
問:我理解你可以重放捕捉的程序,對嗎?
答:是的。如果你沒有這些檔案,使用intellitrace捕捉到除錯程序的其他人可以把記錄以及.dlls和pdbs檔案傳送給你,你可以重放它們的程序。這個程序也許進入到資料庫(你沒有這個資料庫),它也許是採用你不能複製的方法設定的,它可能在你不能企及的網路上,但是,你不用擔心,因為你擁有記錄以及.dlls和pdbs檔案,你可以重放。
當然,擁有源**會更好,因為那樣你就能夠看到這個**好像是在你自己的機器上除錯它一樣。這對於在你的機器上執行正常,在其他人的機器不能執行的那些神秘的故障來說是非常好的。它對於多執行緒的情況也是非常好的,當你經過這個應用程式的時候,這個軟體瑕疵就消失了,但是,在正常速度執行時,這個軟體瑕疵又出現了。
問:有注意事項嗎?你如何解決這些問題?
答:最明顯的問題是你不能在64位機器上做除錯記錄。你可以很好地重放記錄程序。但是,你不能按下f5鍵開始除錯和記錄。但是,有乙個技巧!
如果你改變你的設定作為32位執行,你就能夠按下f5鍵進行除錯和記錄。檢視一下這些截圖影象。下面這些截圖影象顯示了需要修改的東西。
vs2010新特性 下
il 0001 ldc.i4.s 10 il 0003 stloc.0 il 0004 ldc.r8 1.2 il 000d stloc.1 il 000e ldc.r4 1.1 il 0013 stloc.2 il 0014 ldc.i4.2 il 0015 newarr mscorlib sys...
vs2010新特性 下
il 0001 ldc.i4.s 10 il 0003 stloc.0 il 0004 ldc.r8 1.2 il 000d stloc.1 il 000e ldc.r4 1.1 il 0013 stloc.2 il 0014 ldc.i4.2 il 0015 newarr mscorlib sys...
VS2005新特性列表
1.收集自msdn vs2005新增 1.1 ide設定 更多,並且可以匯入匯出 1.2 任務列表 增加對列進行排序,在任意行中顯示多行文字等功能 1.3 快捷鍵 個人覺得非常有用 f7 檢視 shift f7 檢視介面 ctrl ctrl shift 上次 下次 游標位置 ctrl 轉到相匹配的大...