是否可以将Windbg附加到在Internet Explorer(或任何其他浏览器)下运行的基于Silverlight的应用程序?如果它可能,那么我是否必须将windbg附加到浏览器,这将让我进入Internet Explorer下的迷你CLR?
答案 0 :(得分:2)
我不是Silverlight的专家,但您可以在浏览器中使用WinDbg和Silverlight应用程序,但有一些限制。此外,由于您停止插件,某些浏览器(如Chrome)会不断抱怨插件没有响应。
您需要做的第一件事是确保加载正确版本的SOS。 Silverlight有自己的版本,这是你必须使用的版本。要加载正确的版本,请使用CLR模块识别SOS的关联版本。命令是
.loadby sos coreclr
请注意,在Silverlight中调用CLR模块coreclr
。
使用.chain
命令验证您是否加载了正确版本的SOS。如果您已经加载了SOS版本,请确保首先清除WinDbg工作区。
然后您可以访问常规SOS命令。我使用!clrstack
和!dso
等命令取得了有限的成功,但!threads
和!dumpheap
等其他命令的工作正常。
如果您只是附加,则!clrstack
和!dso
命令无法正常工作。但是,如果使用!bpmd
设置断点,它们将在断点的上下文中工作。这可能是由于代码在Silverlight应用程序中的运行方式,但正如我所说,我不是Silverlight的专家。
这适用于Silverlight 4。
苔丝有post about debugging Silverlight 2 apps in the browser。
This long post也值得一看。