欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
12個(gè)Visual Studio調試效率技巧

在這篇文章中,我們假定讀者了解VS基本的調試知識,如:

  • F5 開(kāi)始使用調試器運行程序
  • F9 在當前行設置斷點(diǎn)
  • F10 運行到下一個(gè)斷點(diǎn)處
  • F5 從被調試的已停止程序恢復執行
  • F11 步進(jìn)到函數內(如果當前程序指針指向一個(gè)函數)
  • F10 步過(guò)函數(如果當前程序指針指向一個(gè)函數)
  • Shift+F11 步出執行的函數
  • 暫停執行
  • 附加到進(jìn)程
  • 鼠標懸停時(shí)快速查看源代碼中的元素
  • 調試窗口:局部變量、監視、即時(shí)窗口、模塊、調用堆棧、異常設置

許多開(kāi)發(fā)人員使用這個(gè)功能強大的工具包來(lái)處理調試會(huì )話(huà)。然而,Visual Studio調試工具提供了更多的功能。下面是一系列Visual Studio調試效率技巧。注意,這些提示和快捷方式已經(jīng)在的Visual studio 2019 16.6 EN-US版本中進(jìn)行了驗證,驗證時(shí)Visual studio沒(méi)有安裝擴展。

1、運行到光標位置

使用快捷鍵Ctrl+F10,您可以讓調試器運行到光標所在行位置。

2、通過(guò)點(diǎn)擊鼠標,運行到當前位置

在調試運行的程序時(shí),通過(guò)鼠標懸停在當前行的代碼上時(shí),出現綠色的符號,可以點(diǎn)擊此符號,直接讓斷點(diǎn)運行到此處。

3、在此處作為下一條要執行的語(yǔ)句

在調試運行的程序時(shí),通過(guò)鼠標懸停在當前行的代碼上時(shí),通過(guò)按住Ctrl鍵轉換為將此處作為下一條要執行的語(yǔ)句。它與通過(guò)綠色箭頭符號運行到這里不同,此功能將會(huì )跳過(guò)中間的語(yǔ)句,直接將斷點(diǎn)跳轉到此處。因此,在下面的動(dòng)圖中,我們可以在監視窗口中引用obj仍然為null,中間的MyClass構造函數并沒(méi)有被執行。

4、數據斷點(diǎn):當值發(fā)生變化時(shí),觸發(fā)中斷(值更改時(shí)中斷)

當你設置一個(gè)非靜態(tài)的設置器為斷點(diǎn)時(shí),當所有對象的屬性的值發(fā)生更改時(shí)觸發(fā)斷點(diǎn)。通過(guò)局部窗口(監視器窗口)右鍵點(diǎn)擊:值更改時(shí)中斷菜單,單個(gè)對象也可以獲得相同的行為。

下面的動(dòng)畫(huà)說(shuō)明了這個(gè)功能,只有當obj2.Prop發(fā)生變化時(shí),命中斷點(diǎn),而obj1.Prop發(fā)生變化時(shí)沒(méi)有命中斷點(diǎn)。

注意:數據斷點(diǎn)綁定到活動(dòng)對象時(shí),旨在調試期間起作用。因此,一旦調試過(guò)程停止,設置的斷點(diǎn)就會(huì )丟失,在以后的調試過(guò)程中不能重用它。

5、條件斷點(diǎn)

可以將條件附加到斷點(diǎn)中,以便盡在特定場(chǎng)景中觸發(fā)中斷。在下面的動(dòng)圖中,我們在循環(huán)中定義條件i>6的斷點(diǎn)。然后點(diǎn)擊繼續,可以看到一旦斷點(diǎn)停止,i的值實(shí)際上變成了7。

6、跟蹤斷點(diǎn)

在遇到斷點(diǎn)時(shí),停止程序執行時(shí)最常見(jiàn)的操作。但是,你可以選擇在輸出窗口中不終止(或帶終止)打印一些跟蹤信息。下面的動(dòng)圖說(shuō)明了這種可能性。我們在輸出窗口中跟蹤i從0到9的值。注意:跟蹤斷點(diǎn)在編輯器的斷點(diǎn)顯示位置顯示為菱形形狀。

注意,條件和跟蹤操作都可以在斷點(diǎn)上指定。

7、跟蹤超出作用域的對象

在監視窗口中,通過(guò)當前執行范文內引用的名稱(chēng)來(lái)跟蹤對象。但是,當這樣的跟蹤引用超出作用域時(shí),即使在引用對象仍處于活動(dòng)狀態(tài)時(shí),它在監視窗口的上下文也不安的毫無(wú)意義并且被禁用。

在許多情況下,我們想繼續跟蹤作用域外對象的狀態(tài)。為此,請在監視窗口中右鍵單擊此類(lèi)引用,單擊菜單[Make Object ID] 創(chuàng )建對象ID(M),并要在監視器中添加$1(或者$2,$3,...,取決于你已經(jīng)創(chuàng )建了多個(gè)對象ID)。

下面的動(dòng)圖演示了如何跟蹤作用域外對象的屬性獲取器的狀態(tài),該屬性獲取器以字符串的形式返回實(shí)際的日期時(shí)間。它很好地顯示了當引用objFct()上下文中超出作用域時(shí),要觀(guān)看的obj項將被禁用,而$1仍然會(huì )獲得更新。

8、查看函數返回的值

函數返回的值有時(shí)在源代碼中被忽略,或者有時(shí)這個(gè)值在調試時(shí)無(wú)法被顯示的訪(fǎng)問(wèn)。

這樣的返回值可以顯示在調試->窗口->自動(dòng)窗口中。偽變量$ReturnValue也可以在即時(shí)窗口和監視窗口中使用,以方便查看最后一個(gè)函數調用的返回值。

注意,菜單調試->窗口->自動(dòng)窗口僅在Visual Studio調試器附加到進(jìn)程并且程序被調試器暫停時(shí)可用。

9、重新附加到進(jìn)程

Visual Studio 2017開(kāi)始,重新附加到進(jìn)程Shift+Alt+P工具被提出,并且非常方便。將調試器附加到某個(gè)進(jìn)程后,Visual Studio會(huì )記住它,并建議將調試器重新附加到同一進(jìn)程。斜體也一樣,因為這里有一個(gè)關(guān)于進(jìn)程標識的啟發(fā)式方法:

  • 如果已附加的進(jìn)程仍然運行著(zhù),重新附加到進(jìn)程,重新附加到它。
  • 否則,Visual Studio將嘗試查找和前一個(gè)進(jìn)程名具有相同名稱(chēng)的單進(jìn)程,并將調試器重新附加到該進(jìn)程。
  • 如果找到幾個(gè)使用此名稱(chēng)的進(jìn)程,則打開(kāi)“附加到進(jìn)程”對話(huà)框,只顯示名稱(chēng)相同的進(jìn)程
  • 如果找不到具有此名稱(chēng)的進(jìn)程,則顯示“附加到進(jìn)程”對話(huà)框

重新附加到進(jìn)程也適用于涉及多個(gè)進(jìn)程的調試會(huì )話(huà)。在這種情況下,Visual Studio會(huì )嘗試使用上述相同的啟發(fā)式方法來(lái)查找它附加到的所有進(jìn)程。

10、在即時(shí)窗口和在觀(guān)察窗口的No-Side-Effect評估

有時(shí),在即時(shí)窗口或監視窗口中評估表達式時(shí),某些狀態(tài)會(huì )更改。這種行為通常時(shí)不希望發(fā)生的。你不想僅僅因為需要評估表達式的值而破壞調試程序的狀態(tài)。這種情況被稱(chēng)為Heisenbug,該術(shù)語(yǔ)時(shí)物理學(xué)家Werner Heisenberg的雙關(guān)語(yǔ),它首先斷言了量子力學(xué)的觀(guān)察者效應,該現象指出,觀(guān)察系統的行為不可避免的會(huì )改變器狀態(tài)。

為了避免更改任何狀態(tài),你可以在表達式后面加上nse(No-Side-Effect)。下面的動(dòng)圖說(shuō)明了這種可能性(在監視窗口中監視State的值是否有變化)。

下面這種動(dòng)圖是nse在監視窗口的使用。由于SideEffectFct()所觀(guān)察的項中有Refresh評估按鈕,所以此示例比前一個(gè)示例更簡(jiǎn)單。

11、在源碼中顯示線(xiàn)程

調試多線(xiàn)程應用程序是有名的復雜。希望在源碼中顯示線(xiàn)程按鈕能提供很大的幫助。它在編輯器的左側邊欄引入標記圖標,以跟蹤其他線(xiàn)程被暫停的位置。這個(gè)標記可以用來(lái)顯示線(xiàn)程ID,并最終切換到另一個(gè)線(xiàn)程。注意:如果至少兩個(gè)線(xiàn)程在同一位置暫停,則會(huì )顯示不同的標記符號。

更多調試多線(xiàn)程應用程序的技巧可以在這個(gè)微軟文檔中找到:Get started debugging multithreaded applications (C#, Visual Basic, C++)

https://docs.microsoft.com/en-us/visualstudio/debugger/get-started-debugging-multithreaded-apps?view=vs-2019

下面是這個(gè)演示的源代碼,如果你想演示它,可以進(jìn)行參考:

using System;using System.Threading; class Program {   static void Main() {      for (int i=0; i< 5; i++) {         // Avoid capturing a loop variable in the lambda below         int j = i;         // So 2 thread are blocked on '0' case         if (j == 1) { j = 0; }          ThreadPool.QueueUserWorkItem(delegate { Method(j); });      }      Thread.Sleep(60000);   }   static void Method(int id) {      switch(id) {         case 0:            Thread.Sleep(60000); break;         case 1:            Thread.Sleep(60000); break;         case 2:            Thread.Sleep(60000); break;         case 3:            Thread.Sleep(60000); break;         case 4:            Thread.Sleep(60000); break;      }   }}

12、從反編譯的IL代碼中調試源代碼

我們經(jīng)常依賴(lài)一些黑盒組件:我們沒(méi)有源代碼的組件。

但是,在調試復雜行為時(shí),觀(guān)察甚至調試引用的黑盒組件引用的邏輯。這就是為什么從16.5版本開(kāi)始,Visual Studio 2019可以從編譯好的程序中生成一些源代碼。這樣的源代碼是可以調試的。這個(gè)特性是基于開(kāi)源軟件(OSS)工程:ILSpy(https://github.com/icsharpcode/ILSpy)。

反編譯菜單可以在模塊窗口的組件右鍵菜單(如下面的動(dòng)圖所示)和Source Not FoundNo Symbols Loaded對話(huà)框中給出。

IL代碼反編譯為源代碼不可能是完美的,因為一些源代碼信息在編譯時(shí)丟失了。因此,這個(gè)特性有一些限制,在這個(gè)官方文檔的最后會(huì )解釋?zhuān)?a target="_blank" >Generate source code from .NET assemblies while debugging

https://docs.microsoft.com/en-us/visualstudio/debugger/decompilation?view=vs-2019

結尾

Visual Studio非常出色,在調試方面尤其出色。 在這里,我試圖選擇一些既隱藏又經(jīng)常有用的技巧,希望它們能幫助您提高生產(chǎn)率。

如果你感覺(jué)有用,請關(guān)注一下我的公眾號

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
GDB調試器的使用
除錯專(zhuān)家---程序調試的利器GDB
使用斷點(diǎn)
WinDbg入門(mén)教程
11個(gè)強大的Visual Studio調試小技巧
11個(gè)高效的VS調試技巧
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久