Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 記錄軟體開發的點點滴滴 著重於微軟技術、網頁開發、DevOps:C#, Asp .net Mvc、Azure、Docker、Data Science

[開發工具小技巧]應該怎麼用Visual Studio執行和進入debug比較省時間?搭配ReAttach套件快速進入Debug模式

image
圖片來源:https://pixabay.com/en/confused-muddled-illogical-880735/ 和 https://blog.xebialabs.com/2016/03/21/essential-devops-terms/

最近在和同事聊天的時候,才發現到其實雖然我一直以來「以為」有多次強調該如何用Visual Studio run及進入debug比較節省時間, 但是其實有些同事還是不知道。

因此,準備一系列我個人認為大家應該都會的開發工具小技巧,這篇將會從開發每天都會做的事情,run及debug開始:在用Visual Studio開發的時候, 到底應該怎麼run和debug才是最有效率的方式,以及如何使用免費的套件ReAttach來讓debug流程更加的容易。

一般的開發及debug流程

在我以前剛學會Visual Studio開發的時候,那個時候我學習到的做法都是:

  1. 改程式
  2. 要測試的時候按下快速鍵:F5也就是 Start Debugging的動作(綠色的按鈕)
  3. 開始測試功能,如果需要修改,由於在debug模式,需要先停下debug模式,之後才能改
  4. 重複第一個步奏

在這個流程裡面,貌似沒有問題,但是實際上:

  1. 執行速度慢:debug模式因為要能夠debug,因此會load很多其他東西,因此造成了執行起來速度變慢
  2. 需要消耗更多資源:同上一條一樣,因為load的東西多因此消耗的記憶體也多
  3. 修改的流程消耗更多時間:由於在debug模式是無法修改,因此需要停下來才能夠修改

如何優化run及debug的方式

既然上面知道了一般的做法有什麼問題,那能夠怎麼優化呢?以下分幾個步奏來執行:

  1. 以 Start Without Debugging(快速鍵 Ctrl+F5)的執行方式替代 F5
  2. 當需要debug的時候以Attach Process方式進入debug模式
  3. 以套件ReAttach讓attach process的流程更容易

以 Start Without Debugging(快速鍵 Ctrl+F5)的執行方式替代 F5

很多時候把網站run起來的目的只是為了測試功能,因此其實不需要進入Debug模式。

題外話:養成不依賴debug功能其實是一個好的習慣,有發生錯誤先思考一下問題發生原因, 而不是直接debug一步一步走,在整個的思維鍛煉上其實很有幫助。

所以養成以Ctrl + F5替代F5

image
F5及Ctrl + F5在Visual Studio選項位置

不過如果測試過程要改東西怎麼辦?

這個時候可以用 Build (快速鍵 F6)來編譯修改內容。

如果有遇到Build好像沒有很成功,這個時候可以用Clean,或者Rebuild(Rebuild本質上就是clean + build)。

image
Build、Clean及Rebuild的Visual Studio位置
有些修改其實不需要build,因為這些是動態build出來。一般來說這種類型都是View。例如Asp.net裡面的aspx或者Razor view的cshtml。所以如果修改這種類型,連呼叫build都不需要,只需要存檔然後刷新頁面即可。

透過養成Ctrl + F5的習慣,可以減少很多啟動debug,然後停掉debug在修改所花的時間。

不過下一個問題是,如果遇到問題需要debug怎麼辦?

當需要debug的時候以Attach Process方式進入debug模式

當Visual Studioa用Start Without Debugging把網站run起來之後,這個網站會被IIS Express host起來。

而Visual Studio可以透過Attach to Process (快捷鍵: Cltr+Alt+P)attach到IIS Express達到用Visual Studio啟動debug模式。

啟動 Attach To Process 的畫面
image
從Debug Toolbar找到
選擇 iisexpress.exe
Available Process找到iisexpress.exe,如果在清單裡面沒有,可以勾選Show process from all users
image
選擇iisexpress.exe

Attach完了之後,Visual Studio就會進入到一般的debug模式,剩下就和一般debug沒有什麼兩樣。

如果debug完了,停下來,網站是不會停,這個和一般F5不一樣,如果是F5啟動的,當停下debug模式的時候, 整個網站也會停下來
如果attach上去之後,發現無法下中斷點,那麼最有可能是build沒有成功或者沒有乾淨,最好就是先clean,在Ctrl + F5
了解了Attach To Process,換個角度說其實也可以attach到一般IIS網站,甚至Remote Debug。這個完全做的到,但是這篇就不介紹了。

以套件ReAttach讓attach process的流程更容易

了解了Attach To Process之後,下一個問題就是,每一次都要開那個畫面然後找到iisexpress真的很麻煩,是否有什麼方式讓找這個process更加容易呢?

有人因此建立了一個套件,ReAttach,甚至非常佛心的Open Source以及以Free的方式發佈出來。

ReAttach使用非常簡單,安裝了之後,在工具列會有一個紫色的播放按鈕可以按:

image
ReAttach的功能

在這個功能裡面,可以按旁邊下三角形看到最近的4筆曾經有Attach過的Process。

最新Attach的Process會以第一筆呈現。

只需要選擇要Attach的Process即可。

如果說上面的Process都沒有目前想要Attach的,那麼可以先用F5,然後停下來之後剛剛那個process就會出現在第一筆。

結語

如果養成了只以Ctrl+F5的方式在Run程式,真需要debug的時候在用Attach Process的方式進入debug模式, 不止能夠讓整個開發流程速度更快,也能夠鍛煉不debug情況下嘗試解決問題。

希望透過這篇,如果還沒養成這個習慣的可以先試試看,並且裝ReAttach讓整個流程變得更加順利。

如果有不同且能夠更節省開發時間的流程,也請用留言方式互相切磋切磋。

comments powered by Disqus