Visual Studio附加到運行進程


Visual Studio 調試器可以附加到在 Visual Studio 外運行的進程。 可以使用此附加功能執行以下操作:

  • 調試並非在 Visual Studio 中創建的應用程序。

  • 同時調試多個進程。 也可以通過在單個解決方案內啟動多個項目來調試多個進程。

  • 調試正在遠程計算機上運行的進程。

  • 調試一個 DLL,該 DLL 運行在不易從 Visual Studio 啟動的獨立進程上。例如,與 Internet 信息服務一起運行的服務或 ISAPI DLL。

  • 當一個進程在 Visual Studio 外運行時發生崩潰時,將自動啟動調試器。 這就是實時調試。

一旦附加到某個程序,就可以使用調試器執行命令、檢查程序狀態,等等。 有關更多信息,請參見 Execution 控件 和 查看調試器中的數據。 當然,檢查程序的能力可能會受到某些限制,這取決於程序是否用調試信息生成,是否可以訪問程序源代碼,以及公共語言運行時 JIT 編譯器是否在跟蹤調試信息。

如何:附加到運行進程

  1. 在“調試”菜單上選擇“附加到進程”。 如果沒有打開任何項目,請從“工具”菜單上選擇“附加到進程”

  2. 在“附加到進程”對話框中的“可用進程”列表中,找到要附加到的程序。

    1. 如果要調試的程序運行在另一台計算器上,必須首先選擇該遠程計算機。

    2. 如果進程在其他用戶帳戶下運行,請選中“顯示所有用戶的進程”復選框。

    3. 如果是通過“遠程桌面連接”連接,請選中“顯示所有會話中的進程”復選框。

  3. 在“附加到”框中,確保待調試的代碼類型已經列出。 默認的“自動”設置嘗試確定要調試的代碼類型。 如果自動設置不合適:

    1. 單擊“選擇”。

    2. 在“選擇代碼類型”對話框中,單擊“調試以下代碼類型”,然后選擇要調試的類型。

    3. 單擊“確定”。

  4. 單擊“附加”。

    打開“進程”對話框時,會自動顯示“可用進程”列表。 在該對話框打開時進程可以在后台啟動和停止。 不過,內容並非總是最新的。 通過單擊“刷新”,可以隨時刷新列表以查看當前進程列表。

    調試時可以附加到多個程序,但在任何時間,調試器中都只有一個程序處於活動狀態。 可以在“調試位置”工具欄或“進程”窗口中設置活動程序。 所有的“調試”菜單執行命令都會影響活動程序。 可以在“進程”對話框中中斷任何已調試的程序,或者通過“調試”*菜單中斷所有附加的程序。

注意:為了使調試器附加到用 Visual C++ 編寫的托管代碼,該代碼需要發出 DebuggableAttribute。 可通過鏈接 /ASSEMBLYDEBUG 鏈接器選項將它自動添加到代碼中。如果嘗試附加到不受信任的用戶帳戶擁有的進程,則會出現安全警告對話框確認。

在某些情況下,在“遠程桌面”(“終端服務”)會話中進行調試時,“可用進程”列表不會顯示所有可用進程。 在 Windows Server 2003 或更高版本中,如果您以具有有限用戶帳戶的用戶身份運行 Visual Studio,“可用進程”列表將不顯示在會話 0 中運行的進程,會話 0 用於服務與其他服務器進程,包括 w3wp.exe。 您可以通過以下方法解決該問題:使用管理員帳戶運行 Visual Studio 或從服務器控制台而不是“終端服務”會話運行 Visual Studio。 如果這兩種解決方法都不奏效,第三種方法是通過從 Windows 命令行運行 vsjitdebugger.exe -p 進程Id 來附加到進程。 您可以使用 tlist.exe 來確定進程 ID。 若要獲取 tlist.exe,請從 http://go.microsoft.com/fwlink/?LinkId=168279 下載並安裝 Windows 調試工具。

如何:附加到腳本

1、首先是彈出附加進程框

2、單擊要附加到的進程

3、在“附加到”框中,您應該會看到“腳本代碼”或“自動: 腳本代碼”。 如果顯示其他內容,請按照下列步驟操作:

  1. 單擊“選擇”。

  2. 在“選擇代碼類型”對話框中單擊“調試以下代碼類型”,再選擇“腳本”。

  3. 單擊“確定”。

4、單擊“附加”。

如何:設置當前進程

調試時可以附加到多個進程,但在任何給定時間,調試器中只有一個進程處於活動狀態。 可以在“調試位置”工具欄中設置活動進程。

  1. 在“調試”菜單上,單擊“窗口”,再選擇“進程”。

    “進程”窗口可能已經顯示出來。

  2. 在“進程”窗口中,雙擊要作為活動進程的進程。

    - 或 -

    在“調試位置”工具欄上,選擇“進程”列表框,然后選擇要作為當前進程的進程。

如何:分離進程

“分離”可使調試器斷開與程序的連接,該程序已附加到調試器或已從調試器啟動。

同時與所有程序分離

在“調試”菜單上,單擊“全部分離”。

如果分離所有進程,調試器會話將自動結束。

分離單個進程

如何:處理附加錯誤

當 Visual Studio 調試器附加到一個正在運行的進程時,該進程可能包含一種或多種類型的代碼。 調試器能夠附加到的代碼類型包括本機、托管、SQL 和腳本。 在**“附加到進程”**對話框中顯示並選擇這些代碼類型。

有時,調試器能夠成功附加到一種代碼類型,但不能附加到另一種代碼類型。 這種情況可能發生在您嘗試附加到遠程計算機上運行的進程時, 原因是遠程計算機上可能安裝了一些代碼類型的遠程調試組件,但沒有安裝另一些代碼類型的遠程調試組件。 這種情況還可能發生在您嘗試為直接數據庫調試附加到兩個或多個進程時。 SQL 調試僅支持附加到單個進程。

如果調試器能夠附加到某些代碼類型而不是所有代碼類型,您將看到一條消息,指示無法附加的類型。

如果調試器成功地附加到至少一種代碼類型,您就可以繼續調試進程。 您只能調試那些已被成功附加的代碼類型。 上面的示例消息說明未能附加腳本代碼類型。 因此,您將不能調試進程內的腳本代碼。 進程內的腳本代碼將繼續運行,但無法設置斷點、查看數據或在腳本中執行其他調試操作。

如果想了解有關調試器未能附加到某種代碼類型的詳細原因,可以嘗試僅重新附加到該代碼類型。

獲得有關某種代碼類型未能附加的詳細原因

  1. 從進程中分離。 為此,請在“調試”菜單上,單擊“全部分離”。

  2. 僅選擇一種程序類型,再次附加到進程。

    1. 在“附加到進程”對話框的“可用進程”列表中選擇進程。

    2. 單擊“選擇”。

    3. 在“選擇代碼類型”對話框中,選擇“調試以下代碼類型”和未能附加的代碼類型。 清除任何其他代碼。

    4. 單擊“確定”。 “選擇代碼類型”對話框關閉。

    5. 在“附加到進程”對話框中,單擊“附加”。

    此時,附加將徹底失敗,並且您將收到一條特定的錯誤消息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM