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

C++ Programmer's Cookbook

{C++ 基礎(chǔ)} {C++ 高級} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}

Visual Studio 2005中編譯調(diào)試新功能

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

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

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

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

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

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

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



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

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

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

?可視化調(diào)試器(Debugging?Visualizers)

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

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

按此在新窗口打開圖片

利用可視化調(diào)試器,就可以很方便地查看比如dataset類型的數(shù)據(jù),如下圖所示:

按此在新窗口打開圖片

Data?Tips

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

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

按此在新窗口打開圖片

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

按此在新窗口打開圖片

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

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


按此在新窗口打開圖片

?Just?My?Code?Debugging

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

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

  下面舉一個例子來說明。下面的代碼段中,有兩個靜態(tài)方法UserCode()和NonUserCode(),其中,在NonUserCode()中,是應(yīng)用了DebuggerNonUserCode的屬性,這表明這段代碼將在調(diào)試運(yùn)行時,調(diào)試器不會進(jìn)入其中。將斷點(diǎn)設(shè)置在其中的第9行,運(yùn)行程序,程序會在第一個UserCode()里中斷,現(xiàn)在試著用F11繼續(xù)單步跟蹤,會發(fā)現(xiàn)系統(tǒng)在進(jìn)入usercode()方法中運(yùn)行后,并沒有進(jìn)入到NonUserCode()里運(yùn)行。

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)給在調(diào)試階段的每個對象,都可以賦予一個別名,在調(diào)試時,直接引用該別名就可以了。

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

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

按此在新窗口打開圖片

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

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


按此在新窗口打開圖片

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

公告

EMail:itech001#126.com

導(dǎo)航

統(tǒng)計(jì)

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

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1815003
  • 排名 - 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>
              久久亚洲精品伦理| 午夜亚洲视频| 国产精品女主播一区二区三区| 久久三级视频| 欧美一区亚洲一区| 久久久人成影片一区二区三区| 午夜日韩在线| 欧美在线视频在线播放完整版免费观看| 亚洲欧美精品在线| 久久久久久网站| 欧美精品成人一区二区在线观看 | 中文国产成人精品| 亚洲欧美国产精品桃花| 久久精品在线免费观看| 亚洲电影有码| 一个人看的www久久| 香蕉久久夜色| 麻豆九一精品爱看视频在线观看免费| 欧美成人黄色小视频| 欧美日韩一区二区三区在线看| 中日韩美女免费视频网址在线观看| 久久久精品性| 亚洲国产精品第一区二区| 一本色道久久综合亚洲精品婷婷 | 亚洲第一精品夜夜躁人人躁| 91久久久国产精品| 亚洲欧美资源在线| 欧美国产欧美亚洲国产日韩mv天天看完整 | 在线国产亚洲欧美| 99成人在线| 久久亚洲综合色| 最新国产精品拍自在线播放| 亚洲欧美激情诱惑| 欧美精品www在线观看| 国产亚洲视频在线| 国产精品久久一区二区三区| 黄色精品一区二区| 亚洲欧美在线高清| 亚洲国产小视频| 久久er99精品| 国产乱码精品一区二区三区五月婷| 亚洲国产精品视频一区| 久久久国产亚洲精品| 一区二区高清| 欧美偷拍一区二区| 亚洲精品一区二区网址| 你懂的国产精品永久在线| 亚洲欧美一区二区三区极速播放| 欧美三级午夜理伦三级中文幕 | 亚洲国产日韩在线| 久久精品人人做人人爽| 亚洲视频网站在线观看| 欧美国产国产综合| 亚洲精品视频在线观看免费| 免费高清在线一区| 久久男人资源视频| 激情久久久久久| 久久久www| 欧美影片第一页| 国产欧美视频一区二区| 小辣椒精品导航| 午夜国产一区| 国产热re99久久6国产精品| 久久99伊人| 久久天天狠狠| 欧美伊久线香蕉线新在线| 亚洲第一精品久久忘忧草社区| 亚洲区第一页| 久久激情中文| 欧美一区二区日韩| 国产婷婷色一区二区三区在线 | 亚洲网站在线观看| 国产精品青草久久久久福利99| 亚洲免费在线观看| 亚洲欧美不卡| 一区二区三区在线不卡| 欧美电影专区| 欧美日本不卡高清| 亚洲一区在线免费观看| 亚洲免费婷婷| 亚洲国产精品久久久久秋霞影院 | 久久人人97超碰国产公开结果| 狠狠狠色丁香婷婷综合激情| 久久亚洲精品中文字幕冲田杏梨| 久久国产精品久久久久久电车| 亚洲第一精品影视| 日韩一本二本av| 国产精品一二| 欧美激情2020午夜免费观看| 欧美日韩国产精品自在自线| 亚洲女爱视频在线| 久久国产欧美精品| 一个色综合导航| 午夜在线精品偷拍| 亚洲精品一区久久久久久| 中日韩在线视频| **性色生活片久久毛片| 亚洲精品在线看| 国产一区二区日韩| 99精品国产99久久久久久福利| 国产色综合久久| 亚洲毛片在线观看.| 国内精品久久久久久久果冻传媒| 亚洲黄色在线| 精品av久久久久电影| 一二三区精品| 日韩一级成人av| 久久久国产午夜精品| 亚洲欧美日韩国产| 欧美成人午夜剧场免费观看| 亚洲欧美日韩区| 欧美极品在线播放| 免费日韩av片| 激情婷婷久久| 欧美在线视频不卡| 欧美一区二区三区视频| 欧美日韩在线观看视频| 亚洲国产欧美在线人成| 激情视频一区二区三区| 欧美在线看片| 欧美亚洲一区二区在线| 欧美色图五月天| 日韩一级免费| 美女精品网站| 欧美在线三级| 欧美视频日韩| 亚洲美女av在线播放| 91久久久国产精品| 噜噜噜91成人网| 蜜桃av一区二区三区| 国内久久精品| 久久精品综合网| 久久电影一区| 国产欧美日韩专区发布| 亚洲色诱最新| 亚洲亚洲精品三区日韩精品在线视频| 欧美大片免费久久精品三p| 欧美黄色片免费观看| 亚洲高清免费在线| 美女网站在线免费欧美精品| 欧美国产1区2区| 亚洲美女av在线播放| 欧美日韩www| av成人免费| 欧美在线观看一区二区| 国产一区二区欧美| 狂野欧美激情性xxxx欧美| 亚洲国产成人在线| 一本到12不卡视频在线dvd| 欧美日韩激情网| 亚洲视频精品在线| 久久精品在线播放| 亚洲韩国一区二区三区| 欧美精品啪啪| 亚洲视频1区2区| 久久精品国产99精品国产亚洲性色| 国产欧美综合在线| 另类专区欧美制服同性| 亚洲福利国产| 亚洲一区二区三区高清不卡| 国产日韩欧美二区| 久久亚洲春色中文字幕| 两个人的视频www国产精品| 亚洲黄色影片| 欧美在线影院| 日韩视频在线观看| 国产精品久久久久久久第一福利| 亚洲欧美日韩综合| 亚洲国产导航| 久久精品系列| 在线亚洲免费| 在线成人小视频| 欧美人与禽猛交乱配视频| 欧美一区二区三区四区在线 | 亚洲黄色三级| 欧美中文在线观看| 亚洲另类在线一区| 国产欧美一区二区三区在线看蜜臀 | 国产精品每日更新| 久久久亚洲午夜电影| 亚洲美女性视频| 久久最新视频| 亚洲永久精品大片| 在线日韩av片| 国产亚洲精品久久久久久| 欧美激情亚洲视频| 亚洲精选一区| 一区二区三区国产在线观看| 欧美一区二区视频在线| 亚洲精品免费看| 国产一区 二区 三区一级| 欧美精品久久一区| 久久精品午夜| 亚洲欧美成人一区二区三区| 亚洲人成在线播放网站岛国| 老司机成人在线视频| 欧美一区二区啪啪| 这里只有精品视频| 99re8这里有精品热视频免费| 国产永久精品大片wwwapp|