當遠程IIS上的C#程序出現問題,怎麼排錯,通常咱們經過看日誌排查錯誤的方法,這種方法在程序異常日誌都打印出來的狀況下是能夠解決的,但若是程序日誌不詳細,或者從日誌看不出有用的內容的時候怎麼排錯?api
本文介紹經過vs2013的msvsmon.exe來遠程調試IIS上的C#程序,感謝劉慧鋒提供的幫助。瀏覽器
環境:app
IIS:10.10.2.142,機器名:WEBAPIL2url
開發機IP:10.10.0.60 ,機器名:LIURENYUAN-DEVspa
目的:經過10.10.0.60去調試10.10.2.142上的IIS的C#程序.net
步驟:調試
1.在vs2013的安裝目錄查找msvsmon.exe,注意有兩個msvsmon.exe,一個是x86的,一個是x64的,本文使用x64的,日誌
路徑:C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Remote Debugger\x64\msvsmon.exe接口
以下圖:進程
2. 共享x64目錄,以便遠程的IIS機器上能夠執行該目錄下的msvsmon.exe,以下圖:
3.而後咱們在10.10.2.142上去查看,可否找到這個共享目錄,由於咱們要在10.10.2.142上訪問這個共享目錄下的msvsmon.exe,從10.10.2.142訪問須要輸入10.10.0.60上的用戶名稱密碼才能訪問,以下圖:
4.在10.10.2.142上打開x64共享目錄,以下圖:
5.雙擊上圖中共享目錄x64下的msvsmon.exe,以下圖:
6.點擊上圖中的tools-options,彈出以下圖,勾選以下圖中的內容,而後點ok.
點擊ok後以下圖:
7.關閉10.10.2.142上的防火牆,以下圖:
8.查看10.10.2.142上的版本,開發機vs2013上的代碼版本須保持與10.10.2.142上的一致,以下圖:
9.更新開發機器10.10.0.60上的代碼與10.10.2.142上的版本一致,以下圖所示。
10.代碼更新一致後,開發機器10.10.0.60上的vs2013從新生成解決方案,以下圖:
11.開發機10.0.0.60上的vs2013上點菜單上的調試→附加到進程 ,而後在彈出的對話框中的」傳輸「後面下拉框中選擇遠程(無身份驗證),再點擊查找,能夠找到咱們的遠程IIS,遠程調試端口爲4018,以下圖:
12.點擊上圖中的選擇,會列出10.10.2.142上的全部進程,咱們選擇10.10.2.142上的w3wp.exe進程,而後選擇附加 ,以下圖:
13.而後能夠看到vs2013已經處於高度狀態,以下圖:
14.接下來咱們用vs2013在登陸接口getPublicKey上設置一個斷點,而後用開發機的瀏覽器登陸10.10.2.142,而後看vs2013裏的斷點可否停住,以下圖:
上圖中的getPublicKey處於pending狀態,再看後臺的斷點已經停住了,以下圖:
至此,經過vs2013的msvsmon.exe調試遠程IIS上的C#程序就已經成功了。
此方法能夠利用開發機上的vs2013一步一步的調試遠程機器上的IIS的程序,因此能夠精肯定位到錯誤的源頭,因此對開發排錯確定有所幫助。