﻿# 啟動 ASP.NET 偵錯模式的另一種比按下 F5 還快的方式

大部分人在測試 ASP.NET 程式時，大多按下 F5 (開始偵錯)(Start Debugging) 進入 ASP.NET 偵錯模式，不過我個人覺得這個程序非常的慢，所以大多不會直接按下 F5，而是先用 Ctrl + F5 直接看執行的結果，速度會快很多，因為大部分時候只是看執行結果，並沒有設定中斷點，無須進入偵錯模式。我之前曾經提過兩篇([這篇](/post/2008/08/26/Debug-an-executable-that-not-in-Visual-Studio-project) & [這篇](/post/2008/08/24/How-to-debug-any-website-javascript-error-using-Visual-Studio))在 Visual Studio 中關於 Attach to Process 的文章，所以當我需要除錯時才會利用 Attach to Process 將 WebDev.WebServer.EXE 程序附加上去，就可以進入偵錯模式了。

附加的步驟十分簡單，只需兩個步驟：

![VS2008 -> Tools -> Attach to Process](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/f010c09ae455323a87fd-image_3.png)

![Attach to Process -> WebDev.WebServer.EXE](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/430138025b8d4d385a38-image_6.png)

不過，雖然只有兩個步驟，但我還是覺得每次都這麼做太麻煩，所以研究出透過 **巨集(Macro)** + **快速鍵繫結** 的方式，可以快速啟動 ASP.NET 偵錯。

**建立巨集函數**

1\. 先按下 Alt + F8 開啟 Macro Explorer

2\. 新增一個新的巨集模組(Module)

![ 新增一個新的巨集模組(Module)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/d6f14835633aa8d6e81e-image_9.png)

3\. 編輯剛剛新增的巨集模組

[![編輯剛剛新增的巨集模組](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/699ea4b726764763f3c3-image_thumb_3.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/d068417cdecd1b25c8b7-image_11.png)

4\. 將以下巨集貼到 Public Module Module1 與 End Module 之間，並按下 Ctrl + S 存檔

```
Sub 附加偵錯程序()
    Try
        Dim m_DBG2 As EnvDTE80.Debugger2 = DTE.Debugger
        Dim m_Transport As EnvDTE80.Transport = m_DBG2.Transports.Item("Default")
        Dim m_DbgEngine(1) As EnvDTE80.Engine
        m_DbgEngine(0) = m_Transport.Engines.Item("Managed")
        Dim m_Process2 As EnvDTE80.Process2
        Try
            m_Process2 = m_DBG2.GetProcesses(m_Transport, "").Item("WebDev.WebServer.EXE")
        Catch ex As Exception
            MsgBox("您尚未啟動網站，建議先按下 Ctrl + F5 啟動網站")
            Return
        End Try
        m_Process2.Attach2(m_DbgEngine)
    Catch ex As System.Exception
        MsgBox(ex.Message)
    End Try
End Sub
```

5\. 之後會在 Macro Explorer 看到剛剛定義的巨集

![在 Macro Explorer 會看到剛剛定義的巨集](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/42d8d94eafca638256d8-image_14.png)

**設定快速鍵繫結巨集執行**

1\. 開啟 Tools 選單 / Options，並找到 Environment / Keyboard 項目

2\. 先在 Show commands containing 輸入「關鍵字」，例如輸入：附加

3\. 找到你的巨集後，在底下的 Press shortcut keys 輸入「快速鍵」，並按下 Assign 即可（如下圖示）

![開啟 Tools 選單 / Options，並找到 Environment / Keyboard 項目, 先在 Show commands containing 輸入「關鍵字」，例如輸入：附加, 找到你的巨集後，在底下的 Press shortcut keys 輸入「快速鍵」，並按下 Assign 即可](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/803eca737397a650352f-image_19.png)

*註：Visual Studio 中的快速鍵真是爆多的，要找到一個還沒用的還真難，我好不容易找到 Alt + \` 快速鍵*

之後你就只要按下 **Alt + \`** 即可快速啟動 ASP.NET 偵錯程序了！

*註：Visual Studio 內建關閉偵錯模式的快速鍵是 Shift + F5*
