青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

Visual Studio 2005中編譯調試新功能

http://blog.csdn.net/qdzx2008/archive/2006/01/03/569462.aspx

原文地址:http://jackyrong.cnblogs.com/archive/2005/11/15/277119.html

在日常的編程中,程序員經常離不開的工作之一,就是調試。當寫好一段代碼或程序后,在運行后總會出現這樣那樣的問題,比如各樣的錯誤,程序員就必須進行調試,將這些錯誤排除。在最新出爐的Visual?Studio?2005中,將提供十分強大而方便的調試功能,從而使程序員能節約時間,提高工作效率。本文中,將主要介紹Visual?Studio?2005?在調試方面新增加的幾個重要功能,并介紹它們的簡單用法。
  
  Edit?and?Contiue功能

  在調試程序的時候,經常會遇到這樣的情況:在調試一大段代碼時,遇到了一個小的錯誤,比如參數的賦值錯誤了,這時候,往往希望能夠馬上將這些小的錯誤改正過來后,能夠繼續調試跟蹤下去,而不用結束整個調試過程去修改。在Visual?Studio?2003中,我們必須停止當前的調試,修改錯誤的地方,再重新編譯,這樣十分不方便。在Visual?Studio?2005?中,提供了一個新的功能叫"edit?and?continue",意思是說,當你在調試時,遇到小的錯誤需要馬上修改后,可以進行編輯修改,然后繼續往下調試,不需要結束整個調試的過程,當你修改后,調試器在后臺進行了自動的編譯,并且會執行新修改的代碼,十分方便。下面舉個例子進行說明。?

  打開Visual?Studio?2005,使用c#建立一個winform窗體應用程序,在窗體中添加一個label標簽,一個文本框,一個按鈕,如下圖所示,我們要實現的功能是,在文本框輸入一些信息后,點按鈕,會彈出一個消息框,顯示的是剛才輸入的信息。
????
按此在新窗口打開圖片

?假如我們編寫的代碼如下所示,出現了一個小錯誤,把textbox1.text的內容當作字符串的一部分了,所以顯示不出用戶輸入的信息。

程序代碼:[ 復制代碼到剪貼板 ]
private?void?button1_Click(object?sender,?EventArgs?e)
{
 //Show?welcome?message
 MessageBox.Show("Welcome?textbox1.Text?to?Edit?and?Continue.");
}?



按此在新窗口打開圖片
現在,如果我們在調試時遇到了這個錯誤,則可以使用edit?and?continue功能來進行改正。

  首先,按F7切換到代碼視圖,在MessageBox.Show這一行設置斷點,之后按F5運行程序,當在文本框輸入字符串時,由于設置了中斷,光標停留在messagebox.show這行上,這時,我們可以修改代碼,修改為:
private?void?button1_Click(object?sender,?EventArgs?e)
{
 MessageBox.Show("Welcome?"?+?textbox1.Text?+"?to?Edit?and?Continue.");
}?

  修改完后,繼續按F5運行,這時候,則會顯示正確的結果了,如下圖,而不需要使用以往的"stop?debugging"的功能先停止調試再修改程序。
按此在新窗口打開圖片

?可視化調試器(Debugging?Visualizers)

  在調試的時候,我們遇到的一個很麻煩的問題,就是有的時候很難看到某些參數的值。比如當你設置了一個斷點去監測一個dataset,并且想看dataset里的每個datatable的數據,這在Visual?Studio?2003中,是十分麻煩的,必須在auto/locals的監視窗口中,一層層地展開去看其值。在Visual?Studio?2005中,為解決這個問題,新增加了叫"debugging?visualizers"(可視化調試器)的功能,該功能可以在調試狀態時,很容易方便地以各類形式,比如文本,html,xml等方式查看各種參數。

  在各類的監視窗口中,比如在autos,locals,watch和quickwatch?中都可以調用可視化調試器,方法是在某個需要監視的參數旁邊,點擊那個放大鏡圖標,就可以在打開的可視化調試器中看到該參數的詳細情況,如下圖所示:

按此在新窗口打開圖片

利用可視化調試器,就可以很方便地查看比如dataset類型的數據,如下圖所示:

按此在新窗口打開圖片

Data?Tips

  在Visual?Studio?2005中,在調試方面,還新增了"data?tips(數據提示)"的功能。當在調試程序期間,只需要將光標移到代碼中某個需要監視的參數上,系統就會自動顯示與該參數相關聯的一些很有用的信息,比如相關的屬性,以及當前該參數的值。在Visual?Studio?2003中,也有該功能,但提供的信息比現在的2005少很多。

  我們依然以上面"edit?and?continue"使用的例子來說明。我們將斷點設在MessageBox.Show這一行,F5運行程序,當在文本框輸入文字并按確定按鈕后,程序自動中斷,這時,將光標移到textbox1.text這個位置,系統就會調用data?tips功能,如下圖所示顯示出與textbox文本框控件相關的一些屬性以及這些屬性此時對應的值。

按此在新窗口打開圖片

???在data?tip的功能中,還可以繼續使用edit?and?continue的功能,只需要在需要的地方鼠標右鍵就可以彈出如下圖的菜單,可以編輯該值。

按此在新窗口打開圖片

??Exception?Assistant(異常助手)?

  在Visual?Studio?.net?2003中,當程序運行出現異常時,系統會顯示一個異常信息對話框,詢問是否停止程序執行或繼續運行程序,但并沒有提供給開發者更多的關于異常的信息。在Visual?Studio?.net?2005中,提供了?Exception?Assistant(異常助手)的新功能,可以顯示豐富的關于異常方面的信息,幫助開發者調試,如下圖
???
按此在新窗口打開圖片
?在上圖中,顯示的是一個sqlException,是由于超時連接而造成的。在異常助手的窗口中,顯示了關于該異常的詳細信息,還可以將這些信息復制到剪貼版中,當選擇view?detail時,會彈出如下圖所示的窗口,進一步顯示關于該異常的詳細信息


按此在新窗口打開圖片

?Just?My?Code?Debugging

  在調試代碼中,我們經常會遇到這樣的問題,有時我們引用了一些其他工具包或者類庫(如Microsoft提供的Enterprise?Library),而在調試時,我們其實是不需要跟蹤調試這些代碼的,因為它們都已經證明是正確的。在Visual?Studio?2003中,處理這類問題我們的方法一般是使用F10跳過它們,但一旦工程龐大的話,這樣做十分麻煩。在Visual?Studio?2005中,新增加了Just?My?Code?debugging(JMC)的新特性,可以讓開發者自己定制哪些代碼是需要調試,哪些代碼是永遠不需要調試的,這樣可以節省大量的時間。

  JMC功能由兩方面來實現。首先,如果一個工程是以release方式進行編譯構建的話(就是工程中,沒有pdb文件),調試器會將其認為是非用戶代碼,那么在調試運行時,就根本不會進入該工程中進行調試。其次,可以使用System.Diagnostics命名空間里的DebuggerNonUserCodeAttribute屬性,將其應用在希望不進行調試的代碼段中。

  下面舉一個例子來說明。下面的代碼段中,有兩個靜態方法UserCode()和NonUserCode(),其中,在NonUserCode()中,是應用了DebuggerNonUserCode的屬性,這表明這段代碼將在調試運行時,調試器不會進入其中。將斷點設置在其中的第9行,運行程序,程序會在第一個UserCode()里中斷,現在試著用F11繼續單步跟蹤,會發現系統在進入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"的概念,也就是說,系統給在調試階段的每個對象,都可以賦予一個別名,在調試時,直接引用該別名就可以了。

  假設在調試的時候,需要跟蹤比如dataset或者hashtable等對象,這些對象中包含了很多其他的子對象,如果想對這些數量眾多的子對象進行跟蹤的話,將十分麻煩。在Visual?Studio?2005中,可以使用object?identity(對象標識)的方法去標記每一個對象,

  比如,在一個windows應用程序中,創建了一個dataset,并將其綁定到datagridview中去。如將sql?server?的northwind數據庫中的orders和orderdetail表中的數據讀出填充到dataset里去,則在調試時,設置一個斷點放在dataset里填充了數據之后的那行,這時,在監視窗口中,鼠標展開this.northwindData這個dataset,如下圖所示,找到orders這個table,然后鼠標右鍵,會彈出一個菜單,選擇其中的"?Make?Object?ID".

按此在新窗口打開圖片

這時,會將orders這個參數以1#的別名方式命名(見下圖),并且在整個應用程序中,只要在dataset的生存期,都可以以1#的方式訪問它。

按此在新窗口打開圖片
下圖的代碼演示了如何在immediate監視窗口中,通過使用object?標識,查看某一個表中所有記錄的方法。要注意的是,必須將其顯式類型轉換為DataApp.NorthwidDataSet.OrdersDataTable。通過使用object?標識的好處是,可以在調試階段,不需要在描述某個參數時,再用冗余的命名方法表示了(比如可以用#1來代替this.NorthwidDataSet.Orders)


按此在新窗口打開圖片

posted on 2006-04-26 12:42 夢在天涯 閱讀(1244) 評論(0)  編輯 收藏 引用 所屬分類: VS2005/2008

公告

EMail:itech001#126.com

導航

統計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1814982
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              国产日本欧美一区二区三区| 久久精品av麻豆的观看方式| 亚洲午夜精品久久久久久浪潮| 亚洲级视频在线观看免费1级| 欲香欲色天天天综合和网| 国产中文一区二区| 亚洲第一天堂无码专区| 亚洲欧洲精品天堂一级| aⅴ色国产欧美| 小黄鸭精品aⅴ导航网站入口| 欧美一区二区免费| 久久这里只有精品视频首页| 欧美激情亚洲自拍| 中文精品视频一区二区在线观看| 亚洲欧美成人一区二区三区| 久久久久九九九| 欧美精品日韩三级| 国产美女精品视频| 亚洲激情成人| 性欧美激情精品| 欧美激情视频一区二区三区免费| 一区二区高清视频| 久久久国产一区二区三区| 欧美理论在线| 狠狠色狠狠色综合日日tαg| 日韩视频二区| 久久婷婷激情| 亚洲午夜女主播在线直播| 久久婷婷影院| 国产情人节一区| 9久草视频在线视频精品| 久久精品免费| 一本久道综合久久精品| 久久久在线视频| 欧美激情一区二区在线| 国内精品国产成人| 亚洲视频综合在线| 亚洲国产成人精品久久| 一区二区三区高清不卡| 麻豆国产精品va在线观看不卡| 国产精品伦理| 亚洲一区二区三区影院| 亚洲国产婷婷香蕉久久久久久99| 久久国产99| 国产日本欧美在线观看| 亚洲欧美大片| 一区二区三区四区五区精品| 欧美激情亚洲另类| 最新成人在线| 亚洲大胆人体视频| 久久精品国产2020观看福利| 国产精品乱码人人做人人爱| 一区二区免费在线观看| 亚洲国产精品第一区二区| 久久久精品午夜少妇| 国产一区二区中文字幕免费看| 小黄鸭精品密入口导航| 亚洲综合色噜噜狠狠| 国产精品视频yy9099| 亚洲欧美日韩精品久久亚洲区 | 欧美一区观看| 亚洲午夜伦理| 国产伦精品免费视频| 性欧美8khd高清极品| 亚洲免费在线精品一区| 国产精品色网| 久久久夜精品| 开心色5月久久精品| 亚洲国产美女久久久久| 亚洲高清av| 欧美日韩另类综合| 亚洲在线观看视频网站| 亚洲欧美激情四射在线日 | 久久久亚洲人| 亚洲欧洲日本国产| 亚洲免费观看高清完整版在线观看熊| 欧美日本精品一区二区三区| 亚洲欧美国产三级| 欧美在线首页| 亚洲日本电影在线| 国产精品99久久不卡二区| 国产精品亚洲а∨天堂免在线| 久久精品综合一区| 免费一级欧美片在线播放| 一区二区三区久久| 欧美亚洲免费在线| 日韩午夜一区| 午夜精品久久久久久久| 亚洲国产成人av好男人在线观看| 亚洲肉体裸体xxxx137| 国产精品热久久久久夜色精品三区 | 欧美极品在线播放| 性高湖久久久久久久久| 久久乐国产精品| 99re6热在线精品视频播放速度| 亚洲深夜福利在线| 精品动漫3d一区二区三区免费| 亚洲高清视频的网址| 国产精品免费区二区三区观看| 欧美mv日韩mv国产网站app| 欧美揉bbbbb揉bbbbb| 蜜桃av一区二区三区| 国产精品久在线观看| 亚洲国产高潮在线观看| 国产亚洲二区| 夜久久久久久| 亚洲人成人一区二区在线观看| 亚洲一区二区三区视频| 亚洲激情亚洲| 久久精品欧美| 亚洲欧美一区二区在线观看| 欧美高清视频在线观看| 免费日韩av电影| 国产乱码精品一区二区三区忘忧草 | 国产精品影视天天线| 欧美激情在线观看| 国产在线观看精品一区二区三区| 日韩视频一区二区三区在线播放免费观看 | 久久久999成人| 欧美午夜精品理论片a级按摩| 欧美成人免费在线观看| 国产一区二区三区四区在线观看 | 亚洲在线观看视频| 欧美日韩成人免费| 欧美激情在线狂野欧美精品| 狠狠色丁香婷婷综合影院| 亚洲欧美激情一区二区| 亚洲一区图片| 欧美丝袜一区二区三区| 亚洲精品自在在线观看| 亚洲区国产区| 欧美丰满高潮xxxx喷水动漫| 欧美成人嫩草网站| 一区二区三区亚洲| 久久久av水蜜桃| 久久久午夜电影| 韩国成人福利片在线播放| 欧美一区二区三区免费在线看 | 在线综合视频| 欧美视频一区二区| 午夜精品理论片| 美女视频黄免费的久久| 欧美成人性网| 亚洲免费激情| 国产精品激情| 欧美一级专区| 麻豆精品传媒视频| 亚洲欧洲日韩女同| 欧美日韩在线不卡| 亚洲欧美日韩中文在线制服| 久久精品人人做人人综合| 一区在线电影| 欧美精品一区二区三区视频| 日韩亚洲欧美一区二区三区| 亚洲砖区区免费| 国一区二区在线观看| 欧美成人性网| 亚洲午夜视频在线观看| 久久免费少妇高潮久久精品99| 亚洲国产91精品在线观看| 欧美高清视频www夜色资源网| 日韩视频免费看| 久久精品五月婷婷| 亚洲黄网站黄| 国产精品最新自拍| 欧美chengren| 亚洲欧美另类在线观看| 欧美成人免费在线观看| 亚洲线精品一区二区三区八戒| 国产精品无码永久免费888| 久久女同互慰一区二区三区| 日韩一级精品视频在线观看| 久久九九热免费视频| 99国产精品久久久久老师| 国产日本欧美一区二区| 欧美激情一区二区三级高清视频| 亚洲视频中文字幕| 欧美大片一区| 久久精彩视频| 在线亚洲国产精品网站| 一色屋精品视频在线看| 欧美午夜精品理论片a级按摩| 久久精品理论片| 亚洲欧美日韩国产| 亚洲乱码国产乱码精品精98午夜| 久久久久久国产精品一区| 亚洲一区二区三区在线视频| 在线观看日韩www视频免费 | 99热在这里有精品免费| 国产午夜亚洲精品理论片色戒| 欧美激情视频在线播放| 久久久久高清| 性欧美video另类hd性玩具| 亚洲美女中文字幕| 欧美成人免费在线| 久久艳片www.17c.com| 午夜一区二区三视频在线观看| 一区二区欧美在线观看| 亚洲美女av电影| 亚洲精品国产拍免费91在线|