托管调试助手(MDA)是调试辅助程序,它与公共语言运行时(CLR)一起工作以提供关于运行时状态的信息。这些助手生成关于无法通过其它方式捕获的运行时事件的消息性消息。可以使用MDA隔离在托管代码和非托管代码之间转换时发生的难以发现的应用程序bug。可通过向Windows注册表添加注册表项或设置环境变量,启用或禁用所有的MDA。可使用应用程序配置设置来启用特定MDA。可以在应用程序的配置文件中为某些单独的MDA设置附加配置设置。由于将在运行时分析这些配置文件,因此必须在托管应用程序启动之前启用MDA。不能为已经启动的应用程序启动MDA。
启用 MDA 后,即使不在调试器下执行代码,MDA 也会处于活动状态。 如果在调试器不存在时引发 MDA 事件,尽管这不是未经处理的异常,事件消息也会出现在未经处理的异常对话框中。 若要避免出现该对话框,请在调试环境中未执行代码时移除 MDA 启用设置。
在 Visual Studio 集成开发环境 (IDE) 中执行代码时,可以避免针对特定 MDA 事件出现的异常对话框。 为此,请在“调试”菜单上单击“异常”。 (如果“调试”菜单不包含“异常”命令,请在“工具”菜单上单击“自定义”添加该命令。)在“异常”对话框中,展开“托管调试助手”列表,然后清除相应 MDA 的“引发”复选框。 例如,若要避免出现 contextSwitchDeadlock MDA 的异常对话框,请在“托管调试助手”列表中清除该 MDA 名称旁边的“引发”复选框。 也可以使用此对话框启用 MDA。
下表列出 .NET Framework 附带的 MDA。
默认情况下,.NET Framework 会为所有托管调试器激活 MDA 的子集。 通过单击“调试”菜单上的“异常”并展开“托管调试助手”列表可以查看 Visual Studio 中的默认集合。