gpt4 book ai didi

c# - 在 Visual Studio 2010 中调试时忽略跨 AppDomain 的异常

转载 作者:可可西里 更新时间:2023-11-01 08:41:43 26 4
gpt4 key购买 nike

我在调试调用另一个 AppDomain 的应用程序时遇到问题,因为如果另一个 AppDomain 正在执行的任何操作发生异常,异常就会冒泡并导致 Visual Studio 2010 无论如何都会中断。

我已经正确包装了在 try/catch 中抛出的方法调用,并且当我正常运行应用程序(ASP.NET MVC 应用程序)时异常被正确捕获,但是在 Visual Studio 2010 中调试 w3wp.exe 时,它总是在抛出的方法调用上中断,即使应该捕获异常,我也无法通过异常。

我试图装饰外部方法,其中 try/catch 和 throwing 方法调用是用 [DebuggerStepThrough] 完成的,但这绝对没有效果。执行“Continue (F5)”、“Step over (F10)”或“Step Out (F11)”也没有任何作用; Visual Studio 只是暂停了一下,然后在完全相同的位置再次中断并出现完全相同的异常。一旦 Visual Studio 在发生异常的位置停止,似乎就完全没有办法继续前进了。

我正在做的就是调用 assembly.GetExportedTypes() 如果导出的类型正在引用无法找到的程序集(我想忽略的情况),它可能会抛出。抛出的异常是:

FileNotFoundException crossed a native/managed boundary

我正在正确捕获 FileNotFoundException,正如我所说,它在运行应用程序时有效,但在调试时无效。如果 assembly.GetExportedTypes() 抛出异常,我如何才能让调试器明白我会大吃一惊?

更新:

我以为我通过取消选中 Visual Studio 2010 中名为“当异常跨越 AppDomain 或托管/ native 边界(仅限托管)时中断”(在“调试”>“常规”下)的选项来解决这个问题,但问题刚刚再次弹出.我在相关方法上添加了 [DebuggerStepThrough][DebuggerStepperBoundary][DebuggerNonUserCodeAttribute],但没有任何效果。

最佳答案

Visual Studio 2010 中有一个名为“当异常跨越 AppDomain 或托管/ native 边界(仅限托管)时中断”(在“调试”>“常规”下)的选项,如果未选中该选项,有时会有所帮助。如果不需要,我需要退出 Visual Studio 2010,删除所有临时文件,然后重试。不是一个非常优雅的解决方案,所以如果有人有更好的想法,请提供。

关于c# - 在 Visual Studio 2010 中调试时忽略跨 AppDomain 的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3102604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com