C# 如何调试从BackgroundWorker调用的代码中未处理的异常?

C# 如何调试从BackgroundWorker调用的代码中未处理的异常?,c#,.net,debugging,asynchronous,backgroundworker,C#,.net,Debugging,Asynchronous,Backgroundworker,我正在使用BackgroundWorker对象及其DoAsync()方法从一个简单的WinForms应用程序异步运行一些导入代码。我遇到了一个问题,我不知道异常被抛出,线程过早地死亡。我最终发现了这一点,现在知道在阅读之后何时抛出异常 但是,我在调试时仍然有一个问题。如何调试此代码?我想我可以在一个不使用BackgroundWorker的测试应用程序中运行它,但有没有办法按原样调试它呢?如果我单步执行实际引发异常的代码,那么当异常发生时,我就会被逐出单步执行。从RunWorkerComplete

我正在使用
BackgroundWorker
对象及其
DoAsync()
方法从一个简单的WinForms应用程序异步运行一些导入代码。我遇到了一个问题,我不知道异常被抛出,线程过早地死亡。我最终发现了这一点,现在知道在阅读之后何时抛出异常

但是,我在调试时仍然有一个问题。如何调试此代码?我想我可以在一个不使用BackgroundWorker的测试应用程序中运行它,但有没有办法按原样调试它呢?如果我单步执行实际引发异常的代码,那么当异常发生时,我就会被逐出单步执行。从
RunWorkerCompletedEventHandler重新抛出异常自然也没有多大帮助


有什么想法吗!?提前谢谢

为什么不使用VS的“异常时中断”选项(Ctrl+Alt+E或Debug->Exceptions并将复选框置于抛出列中)?当抛出任何异常时,这将停止您的程序执行。

Visual Studio仅允许您在拥有源代码的情况下单步执行代码。如果您没有源代码,那么我建议您学习如何使用winDBG。MS在这里有一个很好的教程:


它有一个学习曲线,需要一些时间,但我发现它是值得的。我曾使用此工具调试过许多突然崩溃、CPU挂起或性能不佳的应用程序。

我现在在这里看到了另一个答案,但标题并不像我的那样具有描述性。把这个问题留在这里,让人们看看老问题,有意义吗?这是现有的一个链接:事实上,出于某种原因,我从未在任何地方遇到过例外。不像他们所说的VisualStudio在DoWork线程中中断,我的没有!?我想我在那里什么地方都没有试过。。。它没有在预期的位置中断有什么原因吗?我是否可以在Visual Studio的“异常”菜单中禁用此异常引发?我在“托管调试助手”下看到了“AsynchronousThreaAbort”,但这似乎没有起任何作用……AsynchronousCompletedEventArgs()中是否设置了错误?是的,我处理错误很好,只是Visual Studio没有破坏实际引发异常的代码。是的,就是这样。我必须禁用线程抛出的异常。我以为这是一个线程问题!