乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      C#筆記24:善用Visual Studio

       xyjackxjw 2013-05-26

      C#筆記24:善用Visual Studio

      2010-09-19 11:51 by Luminji, 855 閱讀, 0評論, 收藏, 編輯

      C#筆記24:善用Visual Studio

       

      1:調(diào)試的四個窗口

      2:加快編碼速度

      3:加快編碼速度

      4:使用第三方工具豐富VS

      5:VS2010中的工具

      6:學(xué)會調(diào)試

       

      1:調(diào)試的四個窗口

           立即窗口:提供運行時動態(tài)增加代碼,或者動態(tài)改變當(dāng)前代碼變量的窗口。

           快速監(jiān)視窗口:能夠快速監(jiān)視當(dāng)前代碼中的變量。

           調(diào)用堆棧窗口:查看當(dāng)前代碼是被其它那個文件的代碼所調(diào)用。

           線程窗口:查看當(dāng)前應(yīng)用程序所啟用的線程。

           有關(guān)調(diào)試的更多技巧,請參考http://msdn.microsoft.com/zh-cn/library/sc65sadd.aspxhttp://msdn.microsoft.com/zh-cn/library/7fe0dd2y.aspx

       

      2:啟用編輯并繼續(xù)

           調(diào)試代碼過程中,如果發(fā)現(xiàn)代碼有誤,不需要停止調(diào)試,直接暫停調(diào)試,修改代碼,然后恢復(fù)運行,就可調(diào)試剛才修改的代碼。

       

      3:加快編碼速度

          a、智能感知。如輸入prop,再按TAB,即可生成一個公共屬性。要查看所有支持智能感知功能的關(guān)鍵字,請在智能感知右鍵中查看所有LM5AF1P3AY)WKD6)6R)3~YS符號即可。

          b、善用重構(gòu)功能。如選中一段代碼,按ctrl+r+m,便會將該段代碼重構(gòu)成一個函數(shù)。

          c、善用tab,如事件或委托變量的+=后按tab,便可完成一系列自動代碼的生成。

          d、善用其它快捷鍵。默認(rèn)的快捷鍵,不再贅述。一個技巧是,如果想查看某個功能的快捷鍵,可以在“選項”-“鍵盤”中的“顯示命令包含”中輸入功能名字,即可查找到該快捷鍵。你還可以在此處定義你自己的快捷鍵。

       

      4:使用第三方工具豐富VS

          第三方工具中,只介紹一個最有用的工具,那就是RedGat。里面的常規(guī)工具如下,其中最重要的是Reflector,集成到你的VS中后,可以支持直接調(diào)試第三方DLL和FRAMEWORK中開放的DLL,這對于我們閱讀他人優(yōu)秀代碼提升自己的水平有很大作用。

      1) ANTS Memory Profiler 5.1.0.15
      2) ANTS Performance Profiler 5.2.0.26
      3) Exception Hunter 2.1.0.2
      4) PInvoke Visual Studio Add-in 1.1.0.7
      5) SQL Backup 6.3.0.48
      6) SQL Backup Server Components 6.3.0.48
      7) SQL Compare 8.1.0.360
      8) SQL Comparison SDK 8.0.1.8
      9) SQL Data Compare 8.0.2.5
      10) SQL Data Generator 1.2.0.286
      11) SQL Dependency Tracker 2.5.0.558
      12) SQL Doc 2.0.0.733
      13) SQL Multi Script 1.1.0.34
      14) SQL Packager 6.0.0.107
      15) SQL Prompt 4.0.3.12
      16) SQL Refactor 1.5.1.31
      17) SQL Response 1.3.0.58
      18) SQL Response Alert Repository 1.3.0.58
      19) SQL Object Level Recovery Native 1.1.0.32
      20) .NET Reflector 6.0.0.816

       

      5:VS2010中的工具

           VS2010中有一個Extension Manager,其中有很多有用的VS工具。大家可查閱。

       

      6:學(xué)會調(diào)試

           這里有兩篇非常不錯的文章,強烈推薦:

           http://www.cnblogs.com/alexis/archive/2010/11/06/1870519.html

      C#調(diào)試心經(jīng)

      我們在做程序開發(fā)時,難免會遇到錯誤異常。如何快速地找到出錯的地方、分析錯誤的原因以及找到解決問題的方案,是許多初級程序員困擾的問題,這也正是經(jīng)驗的寶貴之處。下面我將簡單介紹在Visual Studio中調(diào)試以及一些高級的調(diào)試和常見的錯誤。

      PS:如無特別說明Visual Studio均指Dev10Visual Studio 2010。

      入門篇

      假設(shè)你是有著.Net平臺的程序員,并且使用Visual Studio 做為開發(fā)工具。

      斷點:最簡單的一種,設(shè)置一個斷點,程序執(zhí)行到那一句就自動中斷進(jìn)入調(diào)試狀態(tài)。設(shè)置斷點,在你覺得有問題的代碼行,左側(cè)單擊,會出現(xiàn)紅色的紅點即斷點。

      啟動調(diào)式:按F5,或者菜單欄---調(diào)式---開始調(diào)試,或者工具欄的圖標(biāo)

      快速監(jiān)視:快速查看變量或者表達(dá)式的值,也可以自定義表達(dá)式進(jìn)行計算

      單步執(zhí)行

      有三種,一種是每次執(zhí)行一行(F10);一種是每次執(zhí)行一行,但遇到函數(shù)調(diào)用就會跳到被調(diào)用的函數(shù)里(F11);一種是直接執(zhí)行當(dāng)前函數(shù)里剩下的指令,返回上一級函數(shù)(Shift+F11)。

      還有一種后悔藥,設(shè)為下一句(Set Next Statement),即下一句會被執(zhí)行的語句(右擊設(shè)置或者快捷鍵:Ctrl+Shift+F10),但要注意在調(diào)試與數(shù)據(jù)有關(guān)的時候,設(shè)置下一句有可能會報異常。如在調(diào)試向DataTable中添加行的時候,已經(jīng)存在的行不能重復(fù)被添加到DataTable

      監(jiān)視

      調(diào)試器可能會自動列出一些相關(guān)變量的值,但是你可能還關(guān)心其它變量的值,可以添加對這些變量的監(jiān)視。還可以監(jiān)視一個表達(dá)式的值,比如a+b。但是,這個表達(dá)式最好不要修改變量的值,比如監(jiān)視a++都會導(dǎo)致監(jiān)視時修改了a的值,影響了程序的運行結(jié)果。

      調(diào)試技巧篇

      使用快捷鍵會大大提升我們的調(diào)試效率,常用的調(diào)試快捷鍵:

      F5 啟動調(diào)試

      F10 執(zhí)行下一行代碼,但不執(zhí)行任何函數(shù)調(diào)用。

      F11 在執(zhí)行進(jìn)入函數(shù)調(diào)用后,逐條語句執(zhí)行代碼。

      Shift + F11 執(zhí)行當(dāng)前執(zhí)行點所處函數(shù)的剩余行。

      Shift + F5 停止運行程序中的當(dāng)前應(yīng)用程序。可用于“中斷”模式和“運行”模式。

      拖動斷點(感謝 圣殿騎士的提醒)

      在調(diào)試中,我們可以拖動斷點,使得程序運行到我們想要運行的地方。通常是用來驗證這段代碼對程序的運行結(jié)果有沒有影響的。因為我們拖動代碼,則被過濾的代碼就不會執(zhí)行,將它跟原來的相比,可以看出去掉這段代碼有什么影響

      條件中斷

      假如你寫了個for循環(huán),而且循環(huán)的次數(shù)比較多,如下代碼,現(xiàn)在我們知道在i=50的時候會有異常,那我們不可能按50F5去調(diào)試這代碼,不然這效率….

      private void ConditionDebug()
      {
      for
      (int i = 0; i < 100; i++)
      {
      if
      (i==50)
      {
      //some error code here
      Console
      .WriteLine("i=50 here");
      }
      }
      }

      我們可以直接利用vs提供的功能修改變量i的值,一開i=0,即剛進(jìn)入for循環(huán)中,我們設(shè)置將i改為49并回車,再調(diào)試一次,會發(fā)現(xiàn)i=50; 如下圖

      當(dāng)然我們也可以直接在代碼里寫代碼以達(dá)到這個目的,代碼如下

      private void ConditionDebug()
      {
      for (int i = 0; i < 100; i++)
      {
      System.Diagnostics.Debug.Assert(i != 50);
      if (i==50)
      {
      //some error code here
      Console.WriteLine("i=50 here");
      }
      }
      }

      使用了調(diào)試中的Assert(斷言),當(dāng)執(zhí)行程序后會彈出如下的提示框,點擊Ingore(忽略)即可,

      會發(fā)現(xiàn)此時i已經(jīng)為50了,有興趣的朋友可以看看Assert的其他用法。

      Immediate Window

      Immediate window在調(diào)試的時候計算表達(dá)式的值、執(zhí)行語句、打印變量的值等。我們輸入命令(注意一定要以“>”開頭),會有智能提示,而且命名都是自解釋型。

      如,我們現(xiàn)在想要知道i的值,可以輸入命名>Debug.Print i(也可以簡單的使用>? i),如下圖

      Immediate window還有更強大的用法,計算方法的返回值(如果有的話)

      如果有這個的函數(shù)

      int MethodValue(int a)

      {

      if (a==1)

      {

      return 1;

      }

      else

      {

      return 0;

      }

      }

      我們可以使用Immediate命令 >? class.Method(args) 去調(diào)用這個方法,如下圖

      其中p是當(dāng)前類的實例(因為MethodValue是類的方法,注意?和表達(dá)式之間要有空格)

      對于一些實時性很高的程序(如socket)使用 Debug.Write()把錯誤寫到日志文件中,.Net可以將Debug信息寫到你指定的文件中,記住,寫進(jìn)出的信息不一定是出錯的信息,也可以是你的程序的運行的一些重要信息,當(dāng)你調(diào)試過程中發(fā)現(xiàn)某個模塊出了問題,但是不能決定位置,那你就可以使用這個方法,如果是一天才出一個錯誤,那你就更要使用這個方法。

      實例篇

      涉及到WSWebServices)的調(diào)試

      在基于WinForm的實際開始開發(fā)中,我們往往采用WS用做數(shù)據(jù)的傳遞,我們在前臺獲取收集數(shù)據(jù),通過WS將數(shù)據(jù)傳遞給后臺,后臺做相應(yīng)的業(yè)務(wù)邏輯處理后,會持久到數(shù)據(jù)庫中。而往往我們又會在WS中寫一些相關(guān)的代碼,如身份驗證、日志記錄、提示信息等,怎樣去調(diào)試這些代碼呢。

      涉及到JavaScript的調(diào)試

      許多程序員為調(diào)試JavaScript感到困惑不已,因為沒有一款很好的調(diào)試工具。一些人喜歡使用FireBug來調(diào)試JavaScript,確實是一個不錯的選擇,Firebug提供了許多的JavaScript信息,是一款不錯的調(diào)試JavaScript的工具。下面我將會介紹如何使用Visual Studio調(diào)試JavaScript,Visual Studio中調(diào)試JS跟調(diào)試C#差不多,都是設(shè)置斷點,不同的是我們在查看元素值的時候需要注意點。

      涉及到Ajax的調(diào)試

      現(xiàn)在ajax已經(jīng)十分的流行,但是隨之而來的即調(diào)試?yán)щy,大部分初級程序員不知道如何有效地從前臺調(diào)試到后臺代碼,以至出了很多不完善的ajax應(yīng)用。

      下面以一個簡單的實例來介紹如何使用Visual Studio調(diào)試JavaScript。實例是使用Ajax驗證用戶登錄,如果驗證通過,則提示“登錄成功”,否則提示“登錄失敗”。

      下面是主要的代碼,我們使用jQuery來實現(xiàn)ajax,并且在后臺文件中故意出錯。

      正確的用戶名和密碼是admin1

      調(diào)試方法如下,在后臺入口處設(shè)置斷點,然后在前臺js中調(diào)用后臺的方法處設(shè)置斷點,然后按F5啟動調(diào)試,當(dāng)我們輸入用戶名、密碼后,點擊登錄后會發(fā)現(xiàn),前臺斷點被觸發(fā)了。

      F5繼續(xù)調(diào)試,有時候會跳到jQuery的源碼中,不管他,繼續(xù)F5,會發(fā)現(xiàn)執(zhí)行到后臺中的斷點中,如下圖

      而后臺代碼的調(diào)試是十分簡單的。(PS:有時候無需在前臺設(shè)置斷點也可直接進(jìn)入后臺的調(diào)試,如何不行的話,在前臺html文件或者aspx文件中認(rèn)為有可能出錯的地方設(shè)置斷點,一步步調(diào)試)

      一些調(diào)試中出現(xiàn)的常見錯誤(會陸續(xù)更新):

      1. 我們調(diào)試到某一句代碼的時候,突然莫名奇妙的跳出來了,其實是剛剛執(zhí)行的這一句話有異常,我們可以使用try…catch進(jìn)行異常捕獲,看看異常原因是什么,然后做相應(yīng)的處理

      2. ADO.NET,我們會使用ds.Merge()方法進(jìn)行合并內(nèi)存表,如果有異常的話,一般有以下三種情況:

      A.其中一張表中有兩行一模一樣的數(shù)據(jù),包括主鍵

      B.這兩張表的結(jié)構(gòu)不一致

      C.兩張表中某個字段的類型不匹配,如字段ageA表中式string,而在B表中確是Decimal

      大家如果也有收集一些常見的錯誤,期盼能夠分享

      由于上篇文章漏了一些比較重要的知識,在此文中補充。

      斷點篇

      命中次數(shù)(Hit Counts)

      右擊斷點,可以設(shè)置Hit Counts(命中次數(shù)),會彈出如下的對話框

      當(dāng)條件滿足的時候斷點會被命中(即即將被執(zhí)行),這個命中次數(shù)是斷點被命中的次數(shù)。默認(rèn)是始終break,選項有如下的幾種:始終break;當(dāng)命中次數(shù)達(dá)到多少次時break;當(dāng)命中次數(shù)是多少的倍數(shù)時break;當(dāng)命中次數(shù)大于等于多少的時候break。

      于是在上篇中的條件也可以這樣實現(xiàn),設(shè)置命中次數(shù)等于50的時候break,按F5后,斷點被觸發(fā),此時i=50。

      點過濾器

      我們可以限制斷點在特定的處理器和進(jìn)程中??梢栽O(shè)置機(jī)器名、進(jìn)程id、進(jìn)程名、線程id、線程名中的某些條件來過濾一些斷點。

      注意:ThreadId需要特別說明一下,ThreadId并不是托管程序中,.NET 框架中System.Threading.Thread.ManagedThreadId,兩者不能等同。簡單來說,ManagedThreadId是線程在CLR中的標(biāo)識符,而ThreadId卻是線程在操作系統(tǒng)中的標(biāo)識符。因此ThreadId需要從調(diào)試器中的“Threads”窗口中獲取。

      斷點條件

      我們可以設(shè)置斷點達(dá)到的條件,如下圖,我們設(shè)置表達(dá)式為i==5注意是判相等,而不是賦值的等于),按F5,斷點再次被觸發(fā),此時i=50。

      還有一個選項是已經(jīng)被改變,則里面條件是具體的變量,如我們的代碼如下

      private void ConditionDebug()
      {
      int hitCount = 0;
      for (int i = 0; i < 100; i++)
      {
      if (i==49)
      {
      hitCount = 1;
      }
      }
      Console.Write("Hit Count={0}", hitCount);
      }

      我們在代碼里如果i==49,就將hitCount的值改變,同時設(shè)置斷點的條件為

      則當(dāng)斷點再次被觸發(fā)的時候此時i=50。這個通常被用在找變量的時在什么時候發(fā)生改變。

      斷點的位置

      可以設(shè)置斷點的位置,如下圖,設(shè)置程序到達(dá)那個文件的第幾行第幾個字符時觸發(fā)斷點。

      斷點觸發(fā)時

      我們可以設(shè)置斷點到達(dá)時做一些其他的事情,如打印消息,運行一個宏。

      自定義調(diào)用堆棧

      堆棧跟蹤時vs一步步執(zhí)行你的程序是對當(dāng)前的方法調(diào)用繼承關(guān)系的直觀顯示。在調(diào)試程序時,我們會經(jīng)過一個又一個方法,包括方法的嵌套調(diào)用。堆棧跟蹤會對這當(dāng)中的每一層方法作出記錄。選擇“調(diào)試-->窗口-->調(diào)用堆棧”,或者是快捷鍵Ctrl+Alt+C就可以看到當(dāng)前的堆棧跟蹤狀態(tài)。這里會將每個方法單獨顯示為一行,并且?guī)в行刑柡蛥?shù)值。每一個新的方法調(diào)用被稱為堆棧幀。

      堆棧跟蹤是廣為人知的調(diào)試工具,它的優(yōu)點在于你可以雙擊任意一行跳轉(zhuǎn)到程序中該層調(diào)用方法的代碼。于是你可以看到程序是如何執(zhí)行到這一位置的,同時可以看到方法接受的參數(shù)值。并且可以使用Ctrl+C將一個或者全部堆棧幀復(fù)制到剪貼板,并將這個方法的調(diào)用信息發(fā)送給工作伙伴。

      項目屬性中的Debug選項卡

      如果你的項目是Console項目(控制臺應(yīng)用程序)或者是WinForm項目,則右擊項目解決方案,選擇屬性,會出來如下的項目屬性窗體。

      我們可以設(shè)置“啟動動作”、“啟動選項”和“是否啟用調(diào)試”。

      Start Action有三個選擇項:

      Start Project:默認(rèn)選項,設(shè)置為啟動項目

      Start external program:調(diào)試的時候啟動內(nèi)部程序

      Start browser with URL:調(diào)試的時候打開URL地址

      使用Trace.axd調(diào)試ASP.NET

      在以前asp時候,我們?yōu)榱瞬榭茨硞€變量的值,通常會使用Response.Write方法??赡墁F(xiàn)在許多ASP.NET程序員也習(xí)慣在后臺使用Response.Write方法將變量的值寫出來,其實微軟提供了很好的調(diào)試工具,即Trace.axd。它的功能主要是:配置 ASP.NET 代碼跟蹤服務(wù)以控制如何收集、存儲和顯示跟蹤結(jié)果。

      關(guān)鍵的幾個選項:

      1、localOnly 默認(rèn)為false。這個很好理解。如果為true,只在本地輸出跟蹤信息。

      2、enabled 是否啟用跟蹤。

      3、pageOutput  指定在每一頁的結(jié)尾是否呈現(xiàn)跟蹤輸出。如果是 false ,則只能通過跟蹤實用工具訪問跟蹤輸出。

      4、requestLimit  指定在服務(wù)器上存儲的跟蹤請求的數(shù)目。最大為10000,默認(rèn)為10

      5、traceMode  指定顯示跟蹤信息的順序。SortByCategory SortByTime(默認(rèn))

      關(guān)于更多可以參考

      http://msdn.microsoft.com/zh-cn/library/6915t83k%28VS.80%29.aspx

      下面以一個小Demo來說明怎么使用Trace.axd來調(diào)試ASP.NET

      1. 建立一個Web項目,取名為WebTraceTest

      2. 編輯web.config文件,添加trace節(jié)點(在)

      內(nèi)容如下:

      <trace enabled="true" localOnly="true"

      pageOutput="true"

      requestLimit="15"

      mostRecent="true" />

      3. 新建一個頁面,取名為Test.aspx,在里面增加一個文本框和一個按鈕(都是服務(wù)器端的控件)

      按下F5,開始調(diào)試,會發(fā)現(xiàn)出現(xiàn)如下界面

      5. 在文本框中輸入文字,如Alexis,點擊按鈕,會發(fā)現(xiàn)Form Collection中會有詳細(xì)的信息,如下:

      說明:使用Trace.axd我們可以獲得以下信息:

      Request Details:請求的詳細(xì)信息

      Trace Information:跟蹤信息

      Control Tree:控件樹

      Session State:會話狀態(tài)

      Application State:應(yīng)用程序狀態(tài)

      Request Cookies Collection:請求Cookie集合

      Response Cookies Collection:響應(yīng)Cookie集合

      Headers Collection:標(biāo)頭集合

      Response Headers Collection:響應(yīng)標(biāo)頭集合

      Form Collection:窗體集合

      Querystring CollectionQueryString集合(即Url中?后面的字符串的信息)

      Server Variables:服務(wù)器變量

      Visual Studio與一個運行中的進(jìn)程連接

      當(dāng)你按下F5對程序開始調(diào)試時,VS.NET會對項目進(jìn)行生成(如果有必要的話)并以調(diào)試模式啟動程序。也就是說,只要項目位于debug版本的程序集中,VS.NET就與運行得程序之間建立了連接,以便對斷點等與調(diào)試相關(guān)的方法作出反應(yīng)。

      不過有些時候,我們需要或者想要對正在運行得Visual Studio之外啟動的進(jìn)程進(jìn)行調(diào)試。當(dāng)進(jìn)程位于debug版本的程序集中,這是可以做到的。

      1. 選擇“工具—>調(diào)試進(jìn)程”列出所有正在運行得程序,如下圖

      2. 選擇自己感興趣的進(jìn)程,點擊連接,此時Visual Studio自動切換到了調(diào)試模式。

      3. 打開Progress窗口,發(fā)現(xiàn)我們剛剛選擇的進(jìn)程在列表中,如下圖

      這一技巧可以讓你對Windows服務(wù)進(jìn)程進(jìn)行調(diào)試。編寫Windows服務(wù)進(jìn)程時,你無法按F5啟動調(diào)試,因為它們必須先通過管理工具安裝后啟動才能運行。如果你在調(diào)試模式下生成并安裝服務(wù)程序,就可以使用這一技巧進(jìn)行調(diào)試。

      而且你可以對SQL存儲過程使用同樣的方式進(jìn)行調(diào)試。如果你安裝了SQL Server調(diào)試組件,并且有足夠的權(quán)限,就可以連接到SQL Server的進(jìn)程,并在服務(wù)器中為存儲過程設(shè)置斷點來一步步執(zhí)行。

      調(diào)試Visual Studio中的多個項目

      在實際開發(fā)中,我們往往分了許多層,有許多的項目集合在一個解決方案下。我們可以右擊要調(diào)試的項目選擇“調(diào)試-->運行新實例”來實現(xiàn)調(diào)試這個項目。我也可以右擊解決方案,選擇多項目調(diào)試,如下圖

      我們還可以設(shè)置項目的期待順序。在客戶端/服務(wù)器(CS結(jié)構(gòu))程序中,我們可以使用這一方法來確保服務(wù)器端程序在客戶端程序之前運行。

      只在特定類型的異常時中斷

      一個健壯的程序會在運行時處理所有可能出現(xiàn)的異常。不過開發(fā)者在調(diào)試復(fù)雜的程序時會覺得這樣有些麻煩。因為所有的異常都被處理掉了。在出現(xiàn)任何異常時,Visual Studio不會再進(jìn)行處理,或者中斷代碼來對用戶作出提示。

      幸運的是Visual Studio有個選項可以讓開發(fā)者指定他們關(guān)心的異常類型。選擇菜單欄à調(diào)試à異常,或者使用快捷鍵Ctrl+Alt+E。如下圖

      我們可以看到一個樹狀結(jié)構(gòu)列出所有VS可以監(jiān)視到的異常。

      后面的兩個勾選框的意思分別為是否被拋出和用戶是否不處理。

      參考:

      Visual Studio.NET使用技巧手冊》

      http://msdn.microsoft.com/

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多