调试器如何适用于metro应用程序?

时间:2012-06-22 05:37:18

标签: debugging winapi windows-8 windows-runtime

基本上,我对调试器的琐碎研究使我得到的是调试器的工作原理是创建一个围绕原始进程的包装器,并且该进程在包装器中运行。(不在调试器连接到已经运行的进程的情况下)。那么它如何适用于地铁应用呢? Metro应用程序只能在安装时分配给它们的应用程序容器内运行(实际上没有真正意义上的Metro应用程序安装),并且应用程序容器和metro应用程序之间的映射记录在注册表项中。 (所有来自我的研究,不知道如果我错了,请纠正我)。那么调试器也可以在同一个app容器中运行吗?

编辑:关于驱动力的简短说明我为什么要学习这一点。我被this困住了。所以我想我是否可以通过将桌面应用程序作为调试器来实现这个IPC(或者自动化调试器,这会变得更加诡异)并使用DebugBreak模拟metro应用程序和桌面应用程序之间的通信(来自metro应用程序内部) )和Continue语句(来自伪调试器应用程序)

2 个答案:

答案 0 :(得分:3)

“包装”的心理形象是错误的。调试器只是一个单独的进程,它使用内置的Windows支持进行调试。它具有SE_DEBUG权限,由具有普通桌面应用程序权限的应用程序启动。像Visual Studio一样。所以它不会在AppContainer本身内部运行。

答案 1 :(得分:1)

韩寒的回答是正确的。对于Metro风格的应用程序,我们引入了一项新功能,允许您启动应用程序暂停,我们将使用命令行选项启动已注册的调试程序,以指示要附加到哪个进程。有关此功能的信息,请参阅IPackageDebugSettings API,或查看http://winrt.codeplex.com项目以获取示例用法。我不确定,但可能存在围绕此API的开发人员许可限制。

关于在Metro风格的应用程序和桌面应用程序之间支持IPC的初衷 - 如链接的线程所述,这是不受支持的。