【发布时间】:2009-03-31 14:39:08
【问题描述】:
我有一些在后台线程上运行的图像处理代码,并在使用 Dispatcher.BeginInvoke() 完成处理后更新 UI 线程上的图像控件。当我在调试器之外运行我的应用程序时,它经常崩溃。一旦我在调试器中运行它,我根本无法让它发生。显然时间上的差异足以让我现在的生活变得悲惨;-)
我尝试在任何看起来相关的代码周围放置 try/catch 块,并记录出现的任何错误,但无济于事 - 它以某种方式不断从我身边溜走,我不知道还能去哪里看。
我希望使用调试器的目的是将调试器的异常捕获行为设置为在抛出任何异常时中断,但由于在调试时我无法让异常发生,所以我无法找出我的代码在哪里抛出.
我可以附加到我崩溃的进程(因为它停留在屏幕上,只是完全没有响应),暂停调试器,并查看每个线程在代码中的位置,但这并没有真正帮助我 - 我不知道实际抛出的异常是什么。
对如何进行有什么建议吗?
编辑:
- 我一直在尽可能多的地方使用 System.Diagnostics.Trace.WriteLine() 和 DbgView。我可以追踪异常发生的位置,但我找不到什么异常是什么,这才是重要的。
- 我以前使用过 WinDBG+SOS 来追踪内存泄漏,但没有追踪难以发现的异常。任何人都可以建议以这种身份使用 WinDBG+SOS 的资源吗?
【问题讨论】:
-
在调试或发布版本(配置)中,在没有附加调试器的情况下会崩溃吗?
-
在我们拥有活跃的调试器之前,我们是如何调试软件的?现在的孩子们应该学习针对这种情况的无调试器调试。
-
您对 WinDBG+SOS 的体验如何?您可以使用这些工具来查找异常。
-
@Welbog,尽量不要侮辱。如果我能投票给你,我会的。你根本没有帮助。我正在尝试几种不同的无调试器技术,我正在寻找更多我可能不熟悉的技术。
-
@Shay Erlichmen,您能否建议任何有助于追踪异常的 WinDBG+SOS 资源?我以前用过WinDBG,但要追踪内存泄漏。
标签: wpf visual-studio-2008 debugging