vs2013遠程調試調試
- vs遠程調試是基於bs架構的,首先,程序在遠程啓動(debug版,記得附帶pdb文件),然後通過msvsmon.exe作爲代理,和客戶端(本機)進行交互。
- 下面介紹步驟,也可以本地進行測試,目標爲本地主機172(哈哈哈)。當然,下面就以遠程的來舉例子。
附加到遠程進程
在目標機器運行遠程調試代理msvsmon.exe
- 關閉遠程計算機的防火牆(必須是局域網內的計算機,不能是公網)
- 需要注意的是目標機器無需安裝vs,但是目標機器必須有和本地主機一致的遠程調試代理,可以下載對應版本的調試代理。但是最容易的就是直接將本地主機
vs安裝目錄\Common7\IDE\Remote Debugger
整個目錄複製到遠程主機上。這個 目錄下有x64和x86兩個版本,需要注意的是,你若是想調試x86的程序,那隻能運行x84這目錄下的msvsmon.exe
- 運行
msvsmon.exe
,Tool->option->No Authentication
不設置遠程驗證,接下來設置監聽端口號 - 這樣一來,我們的調試環境就已經打搭建起來了,理論上我們已經具備遠程調試的通信環境了。
開始調試
- 我們在本地主機上將編譯模式調到debug模式,然後編譯,然後將整個編譯後的二進制文件(.exe, .pdb和相關的dll依賴)複製到目標機器上。
- 接着我們打開
msvsmon.exe
,添加代理端口號:比方說4020,身份驗證設置爲無身份驗證。點擊確定開啓代理。這個時候,代理服務器已經被運行在剛剛設置的端口號上了。如圖所示
- 紅色框框表示遠程的主機名稱和服務的端口號。
- 接下來我們在本地主機通過遠程主機名稱和端口號連接這臺機器。
本地主機設置
- 以管理員權限運行VS(記得哦,不然會報錯找不到遠程監視器msvsmon.exe)
- 修改項目設置如圖所示
- 工具->附加進程,然後在篩選器 選項選擇查找 ,這裏可以看到同網段內的遠程調試服務,選擇你想要的那個,接着點擊刷新,可以看到遠程主機的正在運行的進程。
- 遠程主機運行程序,本地主機選擇附加到這個程序。
- 命中斷點。
直接調試遠程程序
- 若是不想附加到遠程進程,那麼直接按下
f5
就可以調試了。
寫在後面
- 遠程調試可以說是非常好用了,特別是以下場景。
- 情景一:本地運行沒有任何問題,但是在其他環境運行得時候總是會有莫名的崩潰問題,自己運行又不會崩潰,這個時候就很難在自己本機上覆現了,所以這個時候遠程調試就派上用場了。我們可以將來debug版本和遠程調試工具發送給該崩潰主機,然後通過遠程調試的辦法,對其進行遠程調試和崩潰斷點定位。
- 情景二:本地運行的程序沒有任何問題,在別的機器運行閃退…。這個時候遠程調試直接過去命中崩潰點就可以解決問題。