是否可以将 Windbg 附加到在 Internet Explorer(或任何其他浏览器)下运行的基于 Silverlight 的应用程序?如果可能的话,我是否必须将windbg附加到浏览器,这将使我进入Internet Explorer下的那个迷你CLR?
1 回答
我不是 Silverlight 方面的专家,但您可以在浏览器中将 WinDbg 与 Silverlight 应用程序一起使用,但有一些限制。此外,由于您停止插件,某些浏览器(例如 Chrome)会不断抱怨插件没有响应。
您需要做的第一件事是确保加载正确版本的 SOS。Silverlight 有自己的版本,这是您必须使用的版本。要加载正确的版本,请使用 CLR 模块来识别 SOS 的关联版本。命令是
.loadby sos coreclr
coreclr
请注意,在 Silverlight中调用了 CLR 模块。
使用该.chain
命令验证您是否加载了正确版本的 SOS。如果您已经加载了 SOS 版本,请确保首先清除您的 WinDbg 工作区。
之后,您可以访问常规的 SOS 命令。我使用一些命令(例如!clrstack
and )的成功有限!dso
,但其他命令(例如!threads
and )!dumpheap
按预期工作。
如果您只是附加,!clrstack
and!dso
命令不会按预期工作。但是,如果您使用它们设置断点,!bpmd
它们将在断点的上下文中工作。这可能是由于代码是如何在 Silverlight 应用程序中运行的,但正如我所说,我不是 Silverlight 方面的专家。
这适用于 Silverlight 4。
Tess 有一篇关于在浏览器中调试 Silverlight 2 应用程序的帖子。
这篇长文也值得一看。