为了账号安全,请及时绑定邮箱和手机立即绑定

C# 在异常时将调试器中断为“抛出时中断”

C# 在异常时将调试器中断为“抛出时中断”

C#
SMILET 2021-08-07 17:24:36
在我的 asp.net 应用程序中,如果应用程序抛出异常,它会被捕获并改为提供 500 页。我想在抛出位置中断调试器。目前我正在使用以下代码片段:           void ExceptionHandler(Exception ex) {                if (Debugger.IsAttached)                {                    Debugger.Break();                }}然而,这段代码在ExceptionHandler,而不是在抛出位置中断。我怎样才能在投掷位置打破?我不想更改异常设置,因为我想中断达到的异常ExceptionHandler,而不是系统从中恢复的异常。为了更好地说明我的问题:class Server // Server owned by third party{    static void Main(string[] args)    {        AppDomain.CurrentDomain.FirstChanceException += (source, e) =>        {            // This does not help, because there are legit exceptions            Console.WriteLine("FirstChanceException event raised in {0}: \"{1}\"",                AppDomain.CurrentDomain.FriendlyName, e.Exception.Message);        };        AppDomain.CurrentDomain.UnhandledException += (source, e) =>        {            // This does not help, because exception should be handled by server, otherwise it would shut down            Console.WriteLine("UnhandledException event raised in {0}: \"{1}\"",                AppDomain.CurrentDomain.FriendlyName, e.ExceptionObject);        };        var app = new Application();        while (true)        {            try            {                app.ProcessRequest();            }            catch (Exception e)            {                // If we get here this mean that something is wrong with application                // Let's break on line marked as #1                Console.WriteLine("Server swallowed an exception \"{0}\"", e.Message);                Debugger.Break(); // Debugger breaks, but no exception dialog, and stack trace in method main            }        }    }}
查看完整描述

2 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

您可以附加 Visual Studio 调试器(或远程调试器,如果它在单独的机器上运行)。

步骤 1:在 Visual Studio IDE 中配置设置。

从菜单栏中,选择调试 > Windows > 异常设置。

如果您选择所有异常,当您附加到正在运行的进程时,这将导致调试器每个异常(已处理和未处理)之前中断。

第 2 步:附加到您的进程以在 Visual Studio(本地或远程)中对其进行调试。

从菜单栏中,选择“调试”>“附加到进程...”,然后按进程 ID 找到您的应用程序或 Web 应用程序池。

(注意:如果您是远程调试,则将远程调试器从您的 Visual Studio 安装目录复制到远程计算机并以管理员身份运行,以便 Visual Studio 可以连接。通常它默认为端口 4020。)


查看完整回答
反对 回复 2021-08-07
  • 2 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信