【问题标题】:How to stop "Just In Time Debugging" messages blocking a buildserver如何停止阻塞构建服务器的“及时调试”消息
【发布时间】:2009-12-12 14:20:55
【问题描述】:

我们的构建服务器(TeamCity,非常推荐)在我们完成的 c++ 程序上运行我们的一大堆测试套件。

有一次,测试导致我们的程序崩溃,通常会弹出一个 VisualStudio 对话框,让我可以在 JustInTime 调试崩溃。该对话框停止构建服务器的进程。而不是标记为失败的构建,它只是挂起。我已经在 VisualStudio 中关闭了 Just In Time 调试功能,但是当它关​​闭时,您仍然会收到一条消息“无法 JustinTime 调试这个,您可以在选项中打开它”。

是否有人知道如何确保程序中任何未处理的异常不会导致任何模式对话框?

【问题讨论】:

  • 由于我们的大多数开发人员都手握Visual Studio,因此我们的构建/测试服务器在Linux 下运行,以验证他们的更改是否适用于“其他平台”。我们的测试应用程序都是带有自定义调试中断处理程序的控制台,正如我相信您所描述的那样,使用附加的调试器运行测试听起来确实很不寻常......

标签: visual-studio teamcity


【解决方案1】:

This MSDN article explains how to disable Just-In-Time debugging on a Windows server。我在下面包含了文章的相关部分:

在服务器上安装 Visual Studio 后,未处理的默认行为 发生异常是显示一个需要用户干预的异常对话框 要么启动即时调试,要么忽略异常。这对于 无人值守的操作。将服务器配置为在出现异常时不再显示对话框 发生未处理的异常(安装 Visual Studio 之前的默认行为),使用 注册表编辑器删除以下注册表项:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger

在 64 位操作系统上,还要删除以下注册表项:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger

  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger

【讨论】:

【解决方案2】:

删除(或重命名)c:\windows\system32\vsjitdebugger.exe。

我尝试删除注册表项,并尝试取消选中 Visual Studio 选项中的所有框,但均未成功。

需要明确的是,我的情况不是 C++ 的。我在 Visual Studio 2010 中使用 Micro Focus COBOL,通过使用注册表和 VS 选项建议,我设法摆脱了“想要调试?”对话框,但这导致了一个不同的对话框来阻止我的自动化过程:

Visual Studio 即时调试器

CASDBC.exe [3564] 中出现未处理的异常(“COBOL 运行时:检测到故障”)。即时调试 此异常失败并出现以下错误:没有安装调试器 启用了即时调试。在 Visual Studio 中,即时 可以从 Tools/Options/Debugging/Just-In-Time 启用调试。

检查文档索引中的“即时调试,错误” 更多信息。

好的

【讨论】:

  • 终于解决了这个问题。谢谢
【解决方案3】:

我不建议编辑/删除注册表。通常注册表是一团糟。

对我有帮助的解决方案非常简单。我刚刚将 JIT 调试器添加到我的 Visual Studio 中。步骤是:

  • 打开Windows Control panel

  • Programs

  • Programs and Features

  • 找到Visual Studio 2017

  • 点击Change。在新打开的窗口中导航到Individual Components 选项卡
  • 勾选Just-In-Time debugger复选框
  • 点击modify

VS 重新加载后,错误应该会得到修复。

【讨论】:

    【解决方案4】:

    就我而言,在win2012服务器上,我尝试过:

    • 删除注册表项
    • 从 c:\windows\system32 中删除 jit 调试器的 exe

    它仍然出现!

    我重新启动,等等。 在确认对话框之前,我的网站在 IIS 中停滞不前!

    确实有效的最终解决方案:在控制面板中,在程序中:卸载“Microsoft Visual Studion 2010 Shell (Isolated)”,将其卸载,问题已解决。

    (SQL Management Studio 是否还能用……我不知道!)

    【讨论】:

    • 为我工作,但要小心。 SQL Management Studio 需要安装。此外,使用 IIS Express,ASP 错误可能不再发送到浏览器,除非我附加到该进程,尽管在 applicationhost.config 中将 scriptErrorSentToBrowser 设置为 true。 (不知道这是怎么发生的或修复是什么......)
    • 如果您删除此组件,SQL Management Studio 确实会停止工作。您可以通过重新安装来修复它。
    【解决方案5】:

    在问题窗口中

    您想使用选定的调试器进行调试吗?

    点击YES(新窗口打开)>OPTIONS(顶行菜单)>DEBUG

    然后在新窗口中删除显示 ENABLE JUST IN TIME DEBUGGERTICK。 禁用 JUST IN TIME 调试器 后关闭窗口或单击 确定 你的问题将得到解决。我已经尝试过了,并且摆脱了 JUST IN TIME POP UP 消息。

    【讨论】:

      【解决方案6】:

      这个问题的最佳解决方案就是这么简单 2个步骤完成 打开 cmd 提示符 类型:注册表编辑器 转到路径-->HKEY_LOCAL_MACHINE-->软件-->Microsoft-->Windows NT-->CurrentVersion-->AeDebug 您现在可以找到该文件:调试器 右键,修改 复制并粘贴此文本:

      drwtsn32 -p %ld -e %ld -g

      点击确定,瞧 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多