如何使用Visual Studio遠(yuǎn)程調(diào)試部署在Azure上的Web App
當(dāng)我們將 Web App 部署在 Azure 上時(shí),如果能夠?qū)崿F(xiàn)遠(yuǎn)程調(diào)試,將會(huì)極大的提高我們修復(fù) bug 的效率。Visual Studio 一貫以功能強(qiáng)大、易用著稱,當(dāng)然可以實(shí)現(xiàn)基于 Azure 應(yīng)用的創(chuàng)建、發(fā)布和調(diào)試。接下來就讓我們一起看看如何使用 Visual Studio 遠(yuǎn)程調(diào)試部署在 Azure 上的 Web App,以及一些常見的注意事項(xiàng)。
注意工具的版本
在開始正文前讓我們先檢查一下使用的 Azure SDK 版本和 Visual Studio 版本。根據(jù)MSDN的介紹,Azure 的遠(yuǎn)程調(diào)試功能是在 Azure SDK 2.2 中加入的,所以請(qǐng)確保您的機(jī)器上安裝了2.2或者是更新的 Azure SDK。
關(guān)于 Visual Studio 的版本問題,MSDN上的描述也很有趣。大意是使用 Visual Studio 2012 已經(jīng)可以遠(yuǎn)程調(diào)試 Azure 上的 Website 了,但是 Visual Studio 2013 又對(duì)此做了很多的提升。個(gè)人理解***使用 VS2013,或者更新的版本。
筆者在寫本文時(shí)的實(shí)驗(yàn)環(huán)境是 VS2015 update3 和 Azure SDK 2.9。
原理簡(jiǎn)介
如果我們要使用運(yùn)行在機(jī)器A上的 Visual Studio 調(diào)試另外一臺(tái)機(jī)器B上運(yùn)行的一個(gè)程序 myapp(機(jī)器B上沒有安裝 visual studio),我們不僅要把附帶 pdb 文件的 myapp 程序部署到機(jī)器B上,還要在機(jī)器B上運(yùn)行一個(gè)調(diào)試輔助程序 msvsmon.exe。運(yùn)行 msvsmon.exe 后,Visual Studio 就能夠 attach 住 myapp 并使用其 pdb 文件進(jìn)行調(diào)試,這就是 Visual Studio 的遠(yuǎn)程調(diào)試功能。而 msvsmon.exe 程序必須與特定版本的 Visual Studio 相匹配才能工作,所以它被集成在 Visual Studio 的安裝包中,用時(shí)去 Visual Studio 的安裝目錄中搜索就能找到。
遠(yuǎn)程調(diào)試 Azure Web App 和上面的過程是一樣的,只不過我們需要通過云端的配置來指定 msvsmon.exe 對(duì)應(yīng)的 Visual Studio 版本,并告訴云端打開一些調(diào)試所需的端口。
下面就讓我們一步步的踏上VS遠(yuǎn)程調(diào)試 Azure App 之旅。
設(shè)置 Deployment credentials
當(dāng)我們部署網(wǎng)站時(shí)就需要?jiǎng)?chuàng)建這個(gè)賬號(hào),這個(gè)賬號(hào)既可以用來部署又可以用來遠(yuǎn)程調(diào)試。
下載發(fā)布用的 publishing profile
Publishing profile 是用于進(jìn)行發(fā)布操作的配置文件。當(dāng)我們要發(fā)布一個(gè)網(wǎng)站或者是一個(gè) Web 應(yīng)用時(shí),需要很多的基本信息,比如服務(wù)器在哪里?用戶名是什么?密碼是什么?等等…這些信息統(tǒng)統(tǒng)保存在 publishing profile 文件中,有興趣的朋友可以打開這個(gè)文件看看里面的詳細(xì)信息。
無論調(diào)試與否,我們都要把應(yīng)用發(fā)布到 Azure 上去,所以先下載 publishing profile:
允許遠(yuǎn)程調(diào)試 Web App
設(shè)置 Application settings 中的遠(yuǎn)程調(diào)試為允許狀態(tài),并指定用于遠(yuǎn)程調(diào)試的 Visual Studio 版本。相關(guān)內(nèi)容已經(jīng)在原理部分講過,這里說些需要注意的內(nèi)容:
這兩項(xiàng)設(shè)置是有期限的,在48小時(shí)之后默認(rèn)會(huì)被關(guān)掉!
原因主要是性能和安全,所以建議大家在調(diào)試完成后立即關(guān)閉遠(yuǎn)程調(diào)試功能。
發(fā)布調(diào)試版本的 Web App
Visual Studio 的調(diào)試功能依賴于編譯過程中產(chǎn)生的 pdb 文件。下面的設(shè)置就是讓 Web App 在發(fā)布時(shí)編譯為 debug 版本并產(chǎn)生對(duì)應(yīng)的 pdb 文件。現(xiàn)在的 Visual Studio 已經(jīng)可以智能的去找 pdb 文件了,所以這里我們不用關(guān)心 pdb 文件是被發(fā)布到了云端還是保存在本地(簡(jiǎn)單就好)!
先導(dǎo)入剛才下載的 publishing profile 文件:
在 Settings 中選擇 Configuration 為 ”Debug”:
然后點(diǎn)擊 “Publish”按鈕進(jìn)行發(fā)布。
Attach 遠(yuǎn)程進(jìn)程
在 Attach 對(duì)話框中輸入網(wǎng)站 URL 中去掉”http://”的部分,然后在彈出的對(duì)話框中輸入我們?cè)谧铋_始處創(chuàng)建的用戶名和密碼。
在列出的進(jìn)程列表中選擇”w3wp.exe”:
點(diǎn)擊”Attach”按鈕就可以了。
心急的同學(xué)可要注意了,這里可能需要等待上那么一小會(huì)兒…
開始遠(yuǎn)程調(diào)試 Web App
當(dāng)你看到設(shè)置的斷點(diǎn)變成可用狀態(tài)時(shí),就可以嘗試去觸發(fā)一個(gè)斷點(diǎn)了。
好了,看上去還不賴,能夠工作了!
注意,實(shí)際使用過程中可能并不會(huì)這么的順利。主要是在 attach 的時(shí)候,可能需要多試幾次才能成功。調(diào)試的過程中速度也是個(gè)問題,感覺還是有點(diǎn)慢。
另外,調(diào)試 Web 程序經(jīng)常會(huì)碰到讓人很尷尬的一幕:正好有另外的一個(gè)用戶在使用這個(gè)功能(可能是測(cè)試人員),此時(shí)不要太吃驚喔!