有没有办法在调试时跟踪未处理的对象?例如,在断点被击中之后,我会查看开发人员已经忘记清理的内容。Visual Studio调试和处置对象
2
A
回答
3
不是直接。
但是,您可以添加终结器到您的一次性类中,并让终结器调用一个归因于[Conditional("DEBUG"]
的方法,它们在命中时记录/抛出/通知您。这使您可以跟踪在调试时何时不在对象上调用Dispose()方法,但在部署时,只会像平常一样完成。
1
有没有好办法做到这一点。尽管我同意它会非常好,但Visual Studio缺少任何调试功能来跟踪尚未处理的IDisposable
值。
在过去,当我希望使用这种类型的场景并且不想使用WinDbg + SOS时,我使用了一种手动跟踪的形式。本质上,它看起来像这样
static class Util {
private static List<WeakReference> _list = new List<WeakReference>();
public static IEnumerable<IDisposable> Active {
get { return _list
.Select(x => x.Target)
.Where(x => x != null)
.Cast<IDisposable>(); }
}
[Conditional("DEBUG")]
public static void Track(IDisposable value) {
_list.Add(new WeakReference(value));
if (_list.Count % 100 == 0)) {
_list.RemoveAll(x => x.Target == null);
}
}
}
现在我只是在我的IDisposable
对象的构造函数调用添加到Util.Track
,然后在运行时访问信息
相关问题
- 1. Visual Studio调试器复制对象
- 2. 调试和Visual Studio 2010中
- 3. Visual Studio调试
- 4. Visual Studio调试
- 5. Visual Studio LocalReport对象和ReportViewer
- 6. 从Visual Studio调试HTTP处理程序
- 7. 调试在Visual Studio
- 8. 的Visual Studio调试
- 9. Visual Studio 2008调试
- 10. Visual Studio 2012 - 调试
- 11. Visual Studio未调试
- 12. 调试JavaScript和Visual Studio 2010和火狐
- 13. Visual Studio 2013 IIS调试器设置
- 14. Visual Studio新的调试配置
- 15. Visual Studio中,配置属性 - >调试
- 16. 的Visual Studio - 调试对话框
- 17. 如何在调试时在Visual Studio中检查“this”对象?
- 18. 在Visual Studio 2010中使用扩展对象调试XSLT
- 19. 如何查看Visual Studio调试器中的位图对象?
- 20. Mozilla对象的Visual Studio调试器可视化工具
- 21. 在Visual Studio调试器中打印漂亮的对象图形
- 22. 在visual studio中调试时初始化对象
- 23. Visual Studio代码调试HTML和JavaScript
- 24. Visual Studio 2008和的崩溃调试
- 25. 用Labview和Visual Studio调试DLL
- 26. Visual Studio - Web开发和调试
- 27. System.MethodAccessException,CAS和Visual Studio调试程序
- 28. 在Visual Studio下编译和调试GLUT
- 29. 的Visual Studio调试和可变看
- 30. Visual Studio 2010和IIS 5.1调试问题
感谢您的答复。可惜需要更多的手工工作。 – Nickolodeon 2011-05-23 15:59:44