新聞中心
在VS調試代碼中,我們經常會遇到這樣的問題,有時我們引用了一些其他工具包或者類庫(如Microsoft提供的Enterprise Library),而在VS調試時,我們其實是不需要跟蹤VS調試這些代碼的,因為它們都已經證明是正確的。在Visual Studio 2003中,處理這類問題我們的方法一般是使用F10跳過它們,但一旦工程龐大的話,這樣做十分麻煩。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網綜合服務,包含不限于成都網站設計、成都做網站、常寧網絡推廣、微信小程序、常寧網絡營銷、常寧企業(yè)策劃、常寧品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學生創(chuàng)業(yè)者提供常寧建站搭建服務,24小時服務熱線:13518219792,官方網址:www.cdcxhl.com
JMC功能由兩方面來實現(xiàn)。首先,如果一個工程是以release方式進行編譯構建的話(就是工程中,沒有pdb文件),VS調試器會將其認為是非用戶代碼,那么在VS調試運行時,就根本不會進入該工程中進行VS調試。其次,可以使用System.Diagnostics命名空間里的 DebuggerNonUserCodeAttribute屬性,將其應用在希望不進行VS調試的代碼段中。
下面舉一個例子來說明。下面的代碼段中,有兩個靜態(tài)方法UserCode()和NonUserCode(),其中,在NonUserCode()中,是應用了 DebuggerNonUserCode的屬性,這表明這段代碼將在VS調試運行時,VS調試器不會進入其中。將斷點設置在其中的第9行,運行程序,程序會在第一個UserCode()里中斷,現(xiàn)在試著用F11繼續(xù)單步跟蹤,會發(fā)現(xiàn)系統(tǒng)在進入usercode()方法中運行后,并沒有進入到NonUserCode ()里運行。
- using System;
- using System.Diagnostics;
- class Program
- {
- static void Main(string[] args)
- {
- // Step into F11 from here
- UserCode();// Place break point on this line
- NonUserCode();
- UserCode();
- }
- static void UserCode()
- {
- Console.WriteLine("This is a call from user Code");
- }
- // Attribute to indicate the Debugger to jump
- // over this method
- [DebuggerNonUserCode]
- static void NonUserCode()
- {
- Console.WriteLine("This is a call fron Non User Code");
- }
- }
在Visual Studio 2005中,新引入了"Object Identity While Debugging"的概念,也就是說,系統(tǒng)給在VS調試階段的每個對象,都可以賦予一個別名,在VS調試時,直接引用該別名就可以了。
假設在VS調試的時候,需要跟蹤比如dataset或者hashtable等對象,這些對象中包含了很多其他的子對象,如果想對這些數(shù)量眾多的子對象進行跟蹤的話,將十分麻煩。在Visual Studio 2005中,可以使用object identity(對象標識)的方法去標記每一個對象。#t#
比如,在一個windows應用程序中,創(chuàng)建了一個dataset,并將其綁定到datagridview中去。如將sql server 的northwind數(shù)據(jù)庫中的orders和orderdetail表中的數(shù)據(jù)讀出填充到dataset里去,則在VS調試時,設置一個斷點放在 dataset里填充了數(shù)據(jù)之后的那行,這時,在監(jiān)視窗口中,鼠標展開this.northwindData這個dataset,如下圖所示,找到 orders這個table,然后鼠標右鍵,會彈出一個菜單,選擇其中的" Make Object ID"。
文章題目:幾招教會您VS調試困惑
網站網址:http://www.dlmjj.cn/article/cogpdeg.html


咨詢
建站咨詢
