天天看點

VS遠端調試親曆

背景:

很多情況下本地開發沒有問題,可放到伺服器就有問題(更氣人的是測試環境時也行可就是生産環境不行!)

1、想到可能是伺服器環境不對,Web伺服器版本不對

2、有檔案讀寫是不是檔案夾權限

3、Web伺服器沒有配置對

4、防火牆。。。。。總之是各種可能性的想篇了,也嘗試了,最後隻好打日志!

以前也知道有遠端調試但沒用過,覺得不靠譜,于是也沒有嘗試過!正好明日碰到了一個問題,想到打日志好難哦,還要分析!于是就開始嘗試遠端調試:

開發環境:win7+vs2012

生産環境:win server2003

按照第一篇說的:

===========================================複制Begin==========================================

不知道大家有沒有遇到過這種情況,剛開發完的程式,明明在本機能夠好好的運作,可是部署到伺服器過分發給使用者時,總是出現莫名其妙的錯誤。

一時半會又看不出問題來,怎麼辦呢?難道隻能在伺服器或是客戶電腦上裝一個vs、跟一下代碼嗎?

其實不用的,vs有一個遠端調試的功能。

這個功能是這樣的,程式在其他的電腦上運作,但是我們可以在本地電腦上進行斷點跟蹤。

下面以vs2012為例,為大家介紹一下無身份驗證的遠端調試(如果要用有身份驗證,又沒有域環境,參見最後的總結),同時也說一下vs2012與以前版本在遠端調試功能方面的改進。

1、從開始菜單中打開“Remote Debugger”檔案夾,打開之後,你會看到兩個檔案夾,這個是要複制到遠端計算機上的,隻需要根據具體環境從兩個裡選出一個複制過去就好了。

VS遠端調試親曆
VS遠端調試親曆

2、複制完之後,在遠端電腦上打開vs遠端調試螢幕(“msvsmon.exe”),會出現下圖中的視窗,點選選項菜單,選中無身份驗證和允許任何使用者進行調試。

然後點選确定,這樣,遠端計算機就設定好了。當然,别忘了在遠端計算機上啟動你要調試的程式。

VS遠端調試親曆
VS遠端調試親曆

3、然後,我們在自己的電腦上,打開項目,從調試菜單打開附加到程序視窗,選擇遠端,輸入遠端計算機的ip,然後回車;

再選擇要調試的程式,點選附加按鈕。好了,點個斷點,試試吧。

VS遠端調試親曆
VS遠端調試親曆

4、vs2012與之前版本的不同。

看看這張圖,是不是很熟悉,不就是在遠端計算機上的設定視窗嘛。呵呵,再仔細看看,這個張圖和前面那張是不一樣的。看到“僅限本機”幾個字了吧。

這張圖是從vs2010的遠端調試螢幕中截下來的,這個僅限本機是什麼意思呢?經過幾次試驗,我得出一個結論,這個“本機”的意思,應該是“本地代碼”,

和“托管代碼”是想對應的。如果用vs2012之前的版本,也按照前三節所說的方法設定,是沒有辦法“斷點”的,因為我們要調試的代碼是“托管代碼”。

那麼,此時應該怎麼設定呢?我們隻能選擇“Windows 身份驗證”那個單選框了。附加的時候,也不能再選擇遠端了,隻能選擇“預設”。

 總結一下,如果用vs2012之前的版本進行遠端調試需要注意的幾點:

a、不能選擇無身份驗證

b、如果不是域環境,遠端計算機和本地計算機必須同時使用相同的帳号密碼

c、遠端計算機上的程式檔案要相應包含“.pdb”檔案

VS遠端調試親曆
VS遠端調試親曆
VS遠端調試親曆

===========================================複制End==========================================

結果就報錯:"msvsmon.exe 不是有效的win32程式"

網站找到處理辦法:

===========================================複制Begin==========================================

msvsmon.exe 可能使用了最新平台工具集編譯,進而不支援之前的的 OS,你看上面的連接配接,可能會有更新檔包。

​​http://connect.microsoft.com/VisualStudio/feedback/details/759435/vs2012-msvsmon-exe-doesnt-run-on-windows-xp​​

可以用 depends 看一下 msvsmon.exe 的依賴的 CRT 是什麼版本。

===========================================複制End==========================================

找到了一個

https://support.microsoft.com這個網址上搜“msvsmon.exe 2003”

找到了Microsoft Visual Studio 2010 Remote Debugger 的下載下傳址如果:

​​https://www.microsoft.com/zh-cn/download/details.aspx?id=475​​

安裝天win server 2003上果然能用

===========================================複制Begin==========================================

假設現在有A、B兩台PC機。

VS2010安裝在A機器上,也就是說A機器是開發使用的機器。

B機器是程式運作部署使用的機器,其IP為:192.168.1.129(區域網路IP)

說明:如果B機器是外網IP下面方法照樣适合,不過在使用的适合可能會出現無法附加到程序的錯誤。

如果出現無法附加到程序的錯誤、無法連接配接到裝置.請按照步驟13進行設定。

1、根據vs2010安裝目錄倒找Remote Debugger檔案夾。如下圖:​​

VS遠端調試親曆

​​

2、拷貝C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger目錄到B機器上

3、運作B機器中Remote Debugger\x86下的msvsmon.exe檔案如下圖:(注意以管理者的程式運作msvsmon.exe)​​

VS遠端調試親曆

​​

4、在上圖中選擇Tools中的Options菜單項,如下圖:​​

VS遠端調試親曆

​​​​

VS遠端調試親曆

​​

5、在彈出的對話框中按照下列方式進行設定,如下圖:

​​

VS遠端調試親曆

​​

6、設定完成後點選OK按鈕 ​​

VS遠端調試親曆

​​

到此需要調試的機器B已經設定完畢。

下面給出一個例子來示範如何在A機器上調試B機器中運作的程式。

7、在B機器上運作test.exe如下圖:​​

VS遠端調試親曆

​​​​

VS遠端調試親曆

​​

8、在A機器上打開test.exe對應的源碼(注意源碼必須與test.exe保持一緻,本文隻給出調試方法,例子中代碼無任何邏輯),如下圖:

​​

VS遠端調試親曆

​​

9、在8中選擇Debug菜單中的Attach to Process子菜單項,如下圖:

​​

VS遠端調試親曆

​​

彈出如下對話框:

​​

VS遠端調試親曆

​​

10、在Transport中選擇:Remote(Native only with no authentication)選項,并在Qualifier中輸入:192.168.1.129.如下圖:

​​

VS遠端調試親曆

​​

11、在10的基礎上點選Refresh按鈕,就可以看到B機器上的程序清單了。在程序清單中找到我們需要調試的的程序test.exe并選中

​​

VS遠端調試親曆

​​

12、選擇需要調試的程序後,單擊Attach,就可以調試B機器上的程式。

​​

VS遠端調試親曆

​​

13、無法附加到程序解決方案:

(1)從“開始”菜單中,選擇“控制台”。

(2)在“控制台”中輕按兩下“管理工具”。

(3)在“管理工具”視窗中輕按兩下“本地安全政策”。

(4)在“本地安全政策”視窗中,選擇“本地政策”。

(5)在“政策”列中,輕按兩下“網絡通路: 本地帳戶的共享和安全模型”。

(6)在“網絡通路: 本地帳戶的共享和安全模型”對話框中,将本地安全設定更改為“傳統型”并單擊“确定”。

(7)開啟服務TerminalService

===========================================複制End==========================================

按照操作附加怎麼也找不到!于是在點了幫助:我也就放棄了在2003上調試了:

版本 Visual Basic C# F# C++ Web Developer
學習版
專業版、進階專業版和旗艦版

更何況我是用 vs2012調試 2010可能也不行!就算行了web調試不了,沒多太意義啊

于是把環境放到了win server 2008 按第一篇複制的操作,果然可以了!于是突然覺得2003你也有點老了啊!

Visual Studio 2010

其他版本

本主題适用于:

版本 Visual Basic C# F# C++ Web Developer

繼續閱讀