2008-10-14 126 views
1

这个问题相当简单 - 我正在尝试使用s.o.s在Silverlight应用程序中调试内存泄漏。我可以使用!gcroot得到一些很好的信息,以确定哪些对象有开放的引用,这些对象应该被清除;但在这些情况下,它们往往是核心UI元素(如网格和故事板),如果没有能力查看它们的依赖属性(如名称)的值,我就无法区分它们。试图用!dumpobj来查看依赖项属性对我来说是一个疯狂的追逐,它们都是相互引用的静态类(属性是这样),我最终只是以圈子形式出现。在任何时候,我都无法在任何地方为依赖属性找到单个实际值。如何评估S.O.S.在silverlight/WPF中的依赖属性?

我对此进行了相关搜索,但只能找到其他人提出的问题,或猜测不会导致答案。 http://blogs.msdn.com/tess/archive/2008/09/16/q-a-reader-emails-about-net-memory-leaks-and-random-questions.aspx就是这样一个没有答案的页面。

在此先感谢您的帮助!

回答

1

在Reflector中查看DependencyObject.GetValue的来源使我认为这在Windbg中是不平凡的。作为一种替代方案(我承认它是一种冒险的方法),在您自己的类中,您可以将标准CLR属性绑定到名称DP,这样您就可以在调试器中读取值。

0

这是一个合理的选择,我没有想到。虽然有一个程序来评估依赖属性本身会很好 - 我可以通过添加镜像依赖属性值的类成员来诊断这个特定问题,然后一旦我找到它,就可以将其删除。

感谢您的回复!