在這篇文章中,我們一起看看Visual Studio 2012在針對Windows 商店應用程式生命周期特點,所作出的調試改進,包括從JavaScript 調試,到Windows 8 模拟器,到Windows RT 裝置上的遠端調試。
模拟事件
在此過程中,我們遇到的第一個挑戰是如何來模拟你的應用程式在現實世界使用中會遇到的事件,以便你可以調試這些有趣的情況。如何模拟應用程式被激活、被暫停以及被終止?
為了確定以上事件都可以簡單友善的對應到Visual Studio中,Visual Studio中添加了以下三個指令:Suspend(暫停)、Resume( 繼續)和" Suspend and Shutdown(暫停和關閉)"。
暫停:在應用程式處理事件之後,暫停指令讓應用程式處于暫停狀态。
繼續:繼續運作應用程式,使其重新進入運作狀态,并将它作為在前台活動的應用程式。
暫停和關閉:"暫停和關閉"首先會"暫停"。然後終止應用程式,并停止調試。
你一定和我想的一樣:為什麼需要建立一個"暫停和關閉"的指令呢?此指令的目的是模拟當你的應用程式由Windows 8暫停和終止時,發生的自然順序事件。例如,當你通過停止調試,來關閉應用程式,這時不會觸發暫停事件。當你通過按 Alt + F4 或将其拖動到螢幕的底部來顯式地關閉該程式。在這種情況下,在終止該應用程式之前,會觸發一個暫停事件;但下一次使用者激活該應用程式時,其PreviousExecutionState将是ClosedByUser (這不是VS2012試圖模拟的).是以,"暫停和關閉"指令用來模拟應用程式被Windows暫停和終止,而不是由使用者顯式地關閉。
指令
在 Visual Studio 2012中,程式運作後工具欄中出現下拉Combo選擇框,這些指令按鈕在下拉清單中:
<a href="http://powertoolsteam.blog.51cto.com/attachment/201209/26/2369428_1348652558INkX.png"></a>
請注意"調試位置"工具欄不是總是被啟用的。是以,如果你看不到此工具欄,請通過視圖菜單啟用它:
<a href="http://powertoolsteam.blog.51cto.com/attachment/201209/26/2369428_1348652559hffD.png"></a>
應用程式激活
在調試器中,我們可以模拟應用程式激活。
當你開始在 Visual Studio中調試Metro樣式應用程式時,預設情況下,應用程式自動被激活。(這與磁片激活非常類似。)
當你設定此選項,啟動調試你的項目時,Visual Studio 2012 将進入調試模式,但實際上沒有運作任何東西。你還會注意到"調試位置"工具欄上顯示了你的項目名稱,而不是顯示正在運作的程序。
<a href="http://powertoolsteam.blog.51cto.com/attachment/201209/26/2369428_1348652563nPZo.png"></a>
這表明由該項目部署的應用程式軟體包是在調試模式下,一旦該軟體包的應用程式被激活了,調試器就會附加到程序中。
<a href="http://powertoolsteam.blog.51cto.com/attachment/201209/26/2369428_1348652563q9eu.png"></a>
我們可以模拟與另一個應用程式共享文本,并選擇示例應用程式作為共享目标。在這種情況下,應用程式被激活了,我們可以調試它。請注意,現在"調試位置"工具欄顯示正在運作的實際程序(而不是之前的項目名稱)。
<a href="http://powertoolsteam.blog.51cto.com/attachment/201209/26/2369428_13486525636QAb.png"></a>
調試背景任務
調試器可以模拟另一個 Windows 8 行為,這就是背景任務。背景任務是你的應用程式可能需要在背景執行某些操作,雖然這類應用程式不在螢幕上,也沒有運作。
背景任務是由像計時器事件這樣的系統事件所觸發的。(你的應用程式至少需要運作一次來注冊任務)。背景任務在提供寄宿的系統中正常運作,但是,你也可以為一些背景任務觸發器提供你自己的可執行檔案。無論哪個程序承載該任務,背景任務都作為你的軟體包的一部分運作。
<a href="http://powertoolsteam.blog.51cto.com/attachment/201209/26/2369428_13486525646GLM.png"></a>
當你的軟體在調試模式下時,一旦開始之後,調試器會自動附加到承載程序中。
下一步,若要調試背景任務,添加一個斷點到OnNavigatedTo方法中,然後觸發背景任務:
<a href="http://powertoolsteam.blog.51cto.com/attachment/201209/26/2369428_1348652564a8Za.png"></a>
看到了吧,調試背景任務就這麼簡單 !
本文轉自 powertoolsteam 51CTO部落格,原文連結:http://blog.51cto.com/powertoolsteam/1007486,如需轉載請自行聯系原作者