VS可视化调试学习总结
生活随笔
收集整理的這篇文章主要介紹了
VS可视化调试学习总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
.NET開發人員必備的可視化調試工具
(你值的擁有)
http://sanwen8.cn/p/52airn6.htmlhttp://www.cnblogs.com/cyq1162/p/6027051.html
一:如何使用
1:點擊下載:.NET可視化調試工具 (更新于2016-11-05 20:55:00)http://files.cnblogs.com/files/cyq1162/Intelisense.rar
2:解壓RAR后執行:CYQ.VisualierSetup.exe 成功后關掉提示窗口即可。
PS:一次運行,支持各個VS版本,終身提高調試的效率,而且沒任何副作用。
二:開源及后續升級地址:
開源地址:http://code.taobao.org/svn/cyqopen/trunk/CYQ.Visualizer/
后續升級獲取地址:https://github.com/cyq1162/cyqdata 在文檔目錄下。
三:功能介紹
1:支持字符串的Json轉表格查看:
2:支持NameValueCollection(Request.Form、Request.QueryString)、HttpCookieCollection(Request.Cookies) 表格查看
Cookies:
3:其它的就不截圖,同時還支持以下類型:
1:System.Drawing.Image:(這個轉圖片查看)
2:MDataTable系列:表、行、列、結構
3:DataTable系列:表、行、列、結構
4:泛型系列:Dictionary<,>、LinkedList<>、List<>、Queue<>、SortedDictionary<,>、SortedList<,>、Stack<>
5:非泛型系列:ArrayList、Hashtable、Queue、SortedList、Stack
6:其它繼承自:Enumerable 接口的類型:(類型太多,未來得及一一測試)
BitArray、ReadOnlyCollectionBase、HybridDictionary、ListDictionary、StringCollection、StringDictionary、BaseCollection等
四:研究過程
關于可視化調試這一塊內容,網上一搜,相關的信息全部是我自己以前發過的文章,悲催就一個字。。。。
看來沒啥人研究這一塊,好在蒼天不負有心人,還是被我突圍了。。。。。
能出來這么簡易的工具,經歷的過程是:
1:曾經發布簡單的教程:
自定義可視化調試工具(Microsoft.VisualStudio.DebuggerVisualizers)
http://www.cnblogs.com/cyq1162/p/4551652.html
2:收集了不同的VS版本的DLL(Microsoft.VisualStudio.DebuggerVisualizers.dll)。
3:寫了個工具,批量Copy:開源發布:VS代碼段快捷方式及可視化調試快速部署工具http://www.cnblogs.com/cyq1162/p/6019535.html
4:想到了復制多個項目文件來實現多個VS版本編繹(如果想不到這個,估計也不會折騰):
5:解決了系列化問題(才能大規模的支持各種類型):
默認情況下,不支持系列化的類是不支持可視化的,因此,想支持DataRow查看都不行,會直接拋異常。
為了解決這一問題,進行了互聯網搜索(相關信息,國內基本是我自己的文章,國外好不容易搜到一篇)。
通過研究,終于解決了這一難題:
public class EnumerableVisualizerObjectSource : VisualizerObjectSource
{
? ? ? ? public override void GetData(object target, System.IO.Stream outgoingData)
? ? ? ? {
? ? ? ? ? ? if (target is NameObjectCollectionBase)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? target = MDataTable.CreateFrom(target as NameObjectCollectionBase);
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? target = MDataTable.CreateFrom(target as IEnumerable);
? ? ? ? ? ? }
? ? ? ? ? ? base.GetData(target, outgoingData);
? ? ? ? }
}
自定義數據源,在設置數據源時,把對象轉換成MDataTable,再由MDataTable去系列過去。
6:MDataTable要支持和大量類型的轉換工作(這些年的工作已經完成了不少,只需要再補全即可)。
總結:
上一篇文章發布的時候,有網友還看不懂是用來干什么,一個唉~~~字了了。
這一次,在集滿了所有的條件之下,花了一天的研究時間,直接寫成了工具分享給你。
而你只要下載,再輕輕雙擊一下,就得能得良好的調試體驗!
在你開發調試的過程中,可以很輕松的查看變量的所有數據!!!
========
自定義可視化調試工具
(Microsoft.VisualStudio.DebuggerVisualizers)
http://www.cnblogs.com/cyq1162/p/4551652.html前言:?
最近飛機失聯的太多,明天要飛北京處理服務器雙機熱備的問題,航空保險已買,單號是:TF10122913。?
至于我的銀行卡密碼,在我枕頭下面的字條里,要是我之后沒再更新文章,請通知我家人,哈哈哈哈。
好了,Joke 被 Play 后,下面 Enter 正文。?
背景:
話說:使用CYQ.Data時,會經常斷點MDataTable的對象,為了查看表格的數據內容,在監視里會常ToDataTable(),然后借可DataTable的可視化方式查看表格。
近日:心中莫名就來了一句話,不轉行不行?狠想直接看MDataTable的對象,Like This:
?于是經過一翻小研究,就有了下面的內容。
1:什么是:可視化調試工具(Microsoft.VisualStudio.DebuggerVisualizers)
用文字描述顯的太無力,我直接上圖,很直觀:
A:對字符串的可視化調試展示:?
?B:對DataSet、DataTable系列的可視化展示:
如上圖,簡單一句話總結一下就是:對指定某種類型的可視化插件展示。?
2:怎么實現:可視化調試工具(Microsoft.VisualStudio.DebuggerVisualizers)?
不說你以為很復雜,一說其實簡單的要命,這里對圖片System.Draw.Image進行示例,最終效果如下圖:
下面跟著我一起來:
步驟一:新建個項目=》類庫=》添加一個類。
步驟二:引用:Microsoft.VisualStudio.DebuggerVisualizers?
步驟三:輸入以下代碼:
復制代碼
using Microsoft.VisualStudio.DebuggerVisualizers;
using System;
using System.Drawing;
using System.Windows.Forms;
[assembly: System.Diagnostics.DebuggerVisualizer(
typeof(CYQ.Visualizer.ImageVisualizer),
typeof(VisualizerObjectSource),
Target = typeof(System.Drawing.Image),
Description = "Image Visualizer")]
namespace CYQ.Visualizer
{
? ? public class ImageVisualizer : DialogDebuggerVisualizer
? ? {
? ? ? ? override protected void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
? ? ? ? {
? ? ? ? ? ? Image image = (Image)objectProvider.GetObject();
? ? ? ? ? ? Form form = new Form();
? ? ? ? ? ? form.Text = string.Format("Width: {0}, Height: {1}", image.Width, image.Height);
? ? ? ? ? ? form.ClientSize = new Size(image.Width, image.Height);
? ? ? ? ? ? form.FormBorderStyle = FormBorderStyle.FixedToolWindow;
? ? ? ? ? ? PictureBox pictureBox = new PictureBox();
? ? ? ? ? ? pictureBox.Image = image;
? ? ? ? ? ? pictureBox.Parent = form;
? ? ? ? ? ? pictureBox.Dock = DockStyle.Fill;
? ? ? ? ? ? windowService.ShowDialog(form);
? ? ? ? }
? ? ?}
? }
復制代碼
然后編繹成功后變成一個Xxx.dll,就OK了。
簡單的說明一下代碼流程:
1:新建一個類,叫XXXX,需要繼承自:DialogDebuggerVisualizer
2:重寫方法Show(有兩個參數)
3:代碼里,第一行:objectProvider.GetObject() 返回你要處理的類的實體的拷貝,你進行一下類型轉換就可以了。
這里說明一下,要處理的必須是序列化的。
4:最后一行: windowService.ShowDialog(控件);就是展示呈現一個控件了,通常我們用Form來顯示。
5:中間那一塊,就是我們自定要的呈現了,自己要寫的東西也就是這些了,學點Winform知識你就會了。
6:最后一步,指定要被插件反射用的程序集信息: 上面有三個typeof
第一個typeof(就是那個XXXX類) 第二個typeof(按示例不用管,除非你需要自定義自己的序列化) 第三個typeof(你要可視化呈現的類)?
3:如何部署:可視化調試工具(Microsoft.VisualStudio.DebuggerVisualizers)
?一句話,把那個Xxx.dll放到以下目錄:VS安裝目錄\Microsoft Visual Studio XXX\Common7\Packages\Debugger\Visualizers
?然后就自動生效了,當你調試時,會被加載,進而呈現你的那個效果。
4:源碼下載及說明
?對于不同的VS(2005、2008、2012、2015),你需要編繹不同的版本,主要是引用的:Microsoft.VisualStudio.DebuggerVisualizers 這個版本不一樣。
?下載地址:CYQ.Visualizer.rar 下載
========
調試可視化工具擴展包
http://www.greenxf.com/soft/76609.html調試可視化工具擴展包(自定義可視化調試工具)就是指針對某些特定類型的時候,在調試中可以用一種比較直觀準確的視圖進行展示內容的工具,相比VS內置的屬性列表的方式更加準確。調試可視化工具擴展包中包含了上一個博客所附帶的表達式樹可視化工具,因此建
議在安裝前先刪除之前放置的文件。
功能說明:
所謂的調試可視化,就是指針對某些特定類型的時候,在調試中可以用一種比較直觀準確的視圖進行展示內容的工具,相比VS內置的屬性列表的方式更加準確。
如下圖所示,當出現放大鏡圖標時,點擊圖標可以用可視化工具進行查看。當有多個可視化工具可供選擇時,放大鏡旁邊會出現下拉箭頭。
這個包相比而言功能強了很多……包含了以下類型的可視化支持:
byte[],字節數組,在協議分析和流處理中大量用到
HtmlDocument/HtmlNode/HtmlNodeCollection,屬于 HtmlAgilityPack 中的玩意兒,網頁抓取中經常用到,因此為它們實現了可視化調試器,并可以測試XPATH。
XmlDocument/XmlNode/XmlNodeList,提供對XML的可視化,支持XPATH查詢
JObject,是 JSON.NET 中的對象,提供對它的直觀樹狀結構顯示
Image,支持將內存中圖像直接顯示出來并查看
Expression,支持將表達式樹的具體樹狀結構顯示出來
Linq 2 SQL,查詢可視化
NameValueCollection,支持以列表形式顯示內容(含子類)
========
VS工具:實時可視化樹
http://blog.csdn.net/zmq570235977/article/details/48162401VisuaStudio號稱全宇宙最強大的IDE。在VS2015版本中,微軟又給廣大開發者帶來了一個強大的工具:實時可視化樹(Live Visual Tree,以下簡稱可視樹)。其實樹可視化工具并不是新鮮的東西,在WPF的時候就有了,只是這次微軟集成到是VS2015里,而且功能更強大。
使用此工具可以幫助開發者在調試應用時實時查看UI元素的布局情況,不過目前還只支持WPF 和 Windows Store 的應用。不僅如此,還可以偷看別人家的應用是怎么布局的呢?甚至改變別人的UI,比如這樣:
注意一下,上面的"微軟大法好"在商店中顯示的是“源自Microsoft”,然后我實時可視化樹把它改了,所以我之前微博才說“我發誓沒用任何修圖工具”,因為我用的是它。怎么樣?是不是感覺有點黑科技的樣子?想知道怎么玩,聽我慢慢道來。
先說說如何打開實時可視化樹
在任意工程項目下,F5運行項目。然后通過菜單中的“調試”->“窗口”->“實時可視化樹”,然后你就能看到傳說中的實時可視化樹了。
我的XAML是這樣的:
[html] view plain copy
<Grid> ?
? ? ? ? <StackPanel x:Name="stackPanel"> ?
? ? ? ? ? ? <Rectangle Fill="Blue" Width="250" Height="250"/> ?
? ? ? ? ? ? <Rectangle Fill="Yellow" Width="250" Height="250"/> ?
? ? ? ? </StackPanel> ?
? </Grid> ?
是不是發現可視化樹多了很多不知道什么鬼的東西,其實第一次接觸可視化樹我也不知道是什么。
其實可視化樹上的才是真正的UI界面,我們看到的只是它的表層。在這里就不做太多的理論知識講解了
在正式講解可視樹面板的使用前,我先吐槽下VS。雖然可視樹面板可以跟正在調試中的應用做交互,但是點擊了可視樹面板后,我的應用就最小化了,就不能幫我把應用置于頂層嗎?我只能把VS窗口設置小點跟應用并排顯示
好了,正文開始
1、如果你的控件有Name會一并顯示出來,如上面圖中的stackPanel
2、每個元素的右邊括號里的數字表示該元素內所有子元素數量
3、可視樹面板上有6個操作按鈕和一個輸入框
4、輸入框用于搜索你要的UI元素,并高亮顯示,這個在你UI布局時分復雜時候很有用
5、按鈕1:啟用選擇
啟用選擇后,當鼠標在目標應用的界面上移動時,光標所指向的元素會被紅色虛線框標記出來。同時鼠標的事件(比如PointerEntered)也不會觸發。此時點擊界面上的元素,在可視化面板就會定位到對應的元素
6、按鈕2:顯示布局修飾工具
開啟該功能后,在可視化面板上點擊的元素,VS會在應用的界面元素上用一個半透明層的東西覆蓋,然后在元素四周繪制輔助線指示出布局
7、按鈕3:預覽選擇
很抱歉,我還不知道它是干啥的....希望有人給我指出
8、按鈕4:全部展開
點擊后,可視化面板就是像開始的那張圖那樣,將所有元素的節點展開,層次分明
9、按鈕5:全部折疊
與全部展開相對應,將所有元素的節點全部折疊
10、按鈕6:顯示屬性
這里的屬性不是運行前的屬性,而是運行時屬性。點擊后開啟的是“實時屬性資源管理器”面板,這個面板也可以通過菜單中的“調試”->“窗口”->“實時屬性資源管理器”打開
11、元素的右鍵菜單
在可視樹面板元素上單擊右鍵,出現右鍵菜單
●顯示屬性:功能同按鈕6
●查看源:定位到對應的XAML代碼
●展開子項:展開當前元素的子項
12、使用實時屬性資源管理器修改“運行時”屬性
在調試應用時,有時候我們希望某些元素的屬性發生改變然后看看效果,傳統的做法是停止調試,然后修改代碼,再調試。通過實時屬性資源管理器面板,可以在調試應用時動態的修改元素屬性,可以立即反應的應用UI界面上。如果效果滿意,就可以停止調試,然后修
改代碼了。怎么樣,是不是很方便。
多數的元素屬性都是可以動態修改的,包括Width、Height、Text、Visibility等
“計算的值”可以幫助查看元素的實際渲染結果
到此為此,我所知道的關于實時可視化樹的知識講完了。
咦,說好的“黑科技”呢?你說的是這個嗎?
別急,看了我上面的講解,自己有沒有思路了呢?不拐彎抹角了,不然要被你打....
實例:統一全平臺 悶聲發大財
一、打開你要調戲的應用,比如應用商店
二、以管理員身份打開VS2015
三、菜單中選擇“調試”->“附加到進程”
四、在彈出的窗口中選擇對應的進程。注意有的應用進程有多個,同時標題也不一定給出,比如應用商店的進程我這里顯示的是兩個(不知道讀者的怎樣)。如果沒找到就刷新試試。選擇后點擊“附加”
五、查看實時可視化樹面板。然后要怎么調戲你隨意~~
什么?就這么簡單,毛線的黑科技。呵呵,本來就沒有黑科技,我是好人,好人的講解到此完畢。
========
VS調試時的DataSet、DataTable可視化工具出錯(函數計算超時)的解決方法
http://blog.csdn.net/yufeng200092/article/details/23298575最近遇到VS2010的可視化工具報錯的問題,現給出最后的解決過程。
? ? 問題描述:VS2010在調試過程中,DataSet、DataTable、DataView這些類型將在鼠標停留的快速提示中顯示一個放大鏡圖標,點擊后會出現相應的可視化工具以顯示其中的數據,相當方便實用。可是,最近在使用過程中在點擊放大鏡圖標后VS卡住幾秒后,提示“計
算函數超時”,之后所有下拉提示都顯示 “由于以前的函數求值超時,函數求值被禁用” 。
? ? 解決過程:一直無法直接查看數據使調試效率大大降低,也不想重新安裝,忍無可忍后再網上找了一些解決方案,要不是增加函數求值最大時間,就是關閉某些函數求值開關,都不好使,最后自己研究了一下,解決步驟如下:
? ? (1)關閉VS。
? ? (2)定位到VS安裝目錄下 %VS2010%\Common7\Packages\Debugger\Visualizers ,例如:E:\VS2010\Common7\Packages\Debugger\Visualizers,將文件Microsoft.VisualStudio.Debugger.DataSetVisualizer.dll ?剪切(CTRL+X),一定要剪切掉,該文件就是導致
奔潰的DLL文件。
?
? ? (3)定位到你的文檔下 %我的文檔%\Visual Studio 2010\Visualizers, 例如:C:\Users\yf\Documents\Visual Studio 2010\Visualizers,將其中的5個文件全部扔進回收站,然后將之前剪切的DLL文件粘貼進去。
? ? (4)好了,啟動VS并調試,看看可視化工具有沒有出來!!
解決或未解決,可以的話都回復一下噢。謝謝支持羨慕
========
msdn-使用可視化工具
https://msdn.microsoft.com/zh-cn/library/xdakzs26(v=vs.100).aspx如何:使用可視化工具
如何:使用 WPF 樹可視化工具
如何:編寫可視化工具
如何:安裝可視化工具
如何:測試和調試可視化工具
可視化工具 API 參考
總結
以上是生活随笔為你收集整理的VS可视化调试学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。