Aar*_*onD 2 debugging multithreading visual-studio
我正在开发一个相当复杂的多线程应用程序,该应用程序不属于任何人。在许多正确的 MessageBox 中,至少有一个需要不同的消息。我可以通过 UI 轻松访问它,但我不知道它在代码中的位置。如果我在此时暂停调试器,它将转到 Application.Run(...) 方法调用,并且调用堆栈为空。
我如何知道 MessageBox 在哪里?
我可以在关闭 MessageBox 后立即中断它并将我带到执行此操作的代码吗?
或者也许暂停所有线程,让我看看哪个线程接近看起来正确的 MessageBox.Show(...) ?
我用的是VS2008。
这段代码有很多具有不同模式的消息框。有些使用 MessageBox.Show(...),而其他则使用owner.Invoke(new MessageBoxShowDelegate(MessageBox.Show),...)。极少数直接包含该消息;大多数要么传递异常消息,要么从数据库获取字符串。
我只是一长串在没有太多内部文档的情况下修改了此代码的人中的另一个人,因此我看不到整体结构。
在 Visual Studio 调试器中运行您的程序。
当消息框出现时,暂停调试器。
检查所有线程,显示 MessageBox 的线程应该在调用堆栈中调用消息框的行的某个位置停止。
据我所知,WPF 和 WinForms 都是如此。如果您在调用堆栈中没有看到任何内容,则您要么处于错误的线程上,要么遇到其他问题,例如消息框调用者位于无法调试的库中。
归档时间: |
|
查看次数: |
233 次 |
最近记录: |