2012-06-22 17 views
1

所以基本上我在調試器瑣碎的研究使我是一個調試器的工作原理是建立圍繞原工藝的包裝和加工包裝內運行。(不是在調試器附加到一個已經運行的過程中的場景)。那麼它對於metro應用程序如何工作?地鐵的應用程序只有當它們被安裝(實際上是地鐵的應用程序沒有安裝在真正意義上)和應用程序容器和Metro應用之間的映射記錄在註冊表項被分配給他們的應用程序容器內運行。 (所有從我的研究,不知道如何正確,請糾正我,如果我錯了)。那麼調試器是否也在同一個應用程序容器中運行?調試器如何爲城域應用程序工作?

編輯:爲什麼想學這個驅動力的短信。我被困在this。所以我在想,如果我可以通過將桌面應用程序作爲調試器實現這個IPC(或者自動化調試,drats這事變得更加creepier)和模擬使用的DebugBreak地鐵應用程序和桌面應用程序之間的通信(從地鐵內部應用程序)和繼續語句(從僞調試器應用程序)

+0

爲什麼一個downvote? – bashrc

回答

3

「包裝」的心理形象是錯誤的。調試器只是一個單獨的進程,它使用內置的Windows支持進行調試。它具有SE_DEBUG特權,並由具有正常桌面應用程序權限的應用程序啓動。像Visual Studio一樣。所以它不會在AppContainer本身內部運行。

+0

好吧,我可能聽起來很愚蠢,但它只是絕望的水平。我可以使用SE_DEBUG的概念來實現http://stackoverflow.com/questions/11135994/waiting-from-a-desktop-app-for-events-originating-from-a-metro-app-and-vice-vers這個? 我的意思是用SE_DEBUG編寫桌面應用程序,並以某種方式用DebugBreak和Continue語句模擬某種IPC? (祈禱不會得到downvotes這個評論,但研究調試工作的研究背後的驅動力是這隻) – bashrc

+0

你是對的,我不會發佈一個答案,如果你會一直在這個前面。我懷疑是麻煩,開發一個可能會影響進程安全配置的應用程序時會添加一個特定的註冊表項。到目前爲止,最大的問題是你無法再調試你的應用程序,Windows只允許一個進程作爲調試器進行連接。 –

+0

有意義,不允許多個調試器。如果你可能會建議的話,任何清潔劑都不可以破解。 – bashrc

1

韓寒的答案是正確的。對於Metro風格的應用程序,我們引入了一項新功能,允許您暫停應用程序的啓動,並且我們將使用命令行選項啓動已註冊的調試程序,以指明要附加的過程。有關此功能的信息,請參見IPackageDebugSettings API,或查看http://winrt.codeplex.com項目以獲取示例用法。我不確定,但是可能有圍繞此API的開發者許可限制。

至於你在Metro風格應用程序和桌面應用程序之間支持IPC的初衷 - 正如鏈接線程所述,這是不受支持的。

相關問題