【问题标题】:Debugged Program Window Won't Close调试的程序窗口不会关闭
【发布时间】:2010-02-16 18:22:47
【问题描述】:

我在 64 位 XP 机器上使用 VS 2008。我正在通过控制台程序调试 32 位 C++ DLL。 DLL 和 EXE 项目包含在同一个 SLN 中,因此我可以在测试时修改 DLL。

发生的情况是,每隔一段时间我就会用 Debug | 杀死程序。停止调试 (Shift-F5)。 VS 停止程序,但控制台窗口保持打开状态!如果我坐在断点处并按下 Shift-F5,它会正常终止,但如果程序在我停止时全速运行,我经常会看到这种情况。

最大的问题是我无法关闭这些僵尸窗口。在任务管理器中使用 End Task 什么都不做(没有消息,什么也没有)。当我关闭机器时,由于孤儿而无法关闭,我不得不求助于实际关闭电源。

我认为这与在同一个 SLN 中拥有 DLL 和 EXE 项目有关,因为几个月来我在 2 个 VS 实例中处理这个项目,一个用于 DLL,另一个用于 EXE。当我工作时,我会不断地在窗户之间来回跳跃。直到我将这两个项目放到一个 SLN 中,这个问题才发生。单个 SLN 的效果要好得多,但这种异常非常烦人。

有什么想法吗?

更新

经过一番搜索 (here),我发现它似乎与上周二的更新之一有关(KB977165 或 KB978037)。感谢 Microsoft 出色的预发布测试。

【问题讨论】:

    标签: c++ visual-studio-2008 debugging


    【解决方案1】:

    它是 KB978037。卸载它可以解决问题。

    More info here

    【讨论】:

      【解决方案2】:

      控制台窗口归 csrss.exe 所有,它是一个系统进程,实际上是唯一不能杀死的进程(至少在 XP 上,如果按正确的顺序执行,您可以杀死其他系统进程,看Mark Russinovich 的文章“在没有服务的情况下运行 Windows”)。所以不幸的是,电源循环似乎是摆脱僵尸控制台窗口的唯一方法。

      【讨论】:

        【解决方案3】:

        最近我也开始发生同样的事情。我使用的是 Windows XP 32 位 VS 2008。我认为这与您的项目组织方式无关。可能是通过 Windows 更新安装的补丁造成的。

        【讨论】:

          【解决方案4】:

          我能找到的最好的方法是解决方法:将 detach all 绑定到 shift-F5 按钮。通过这种方式,您基本上可以从调试器中释放窗口,并且您可以关闭窗口本身,而不会以孤立的 cmd 窗口结束。 希望MS能提出解决方案。 工具 -> 选项 -> 环境 -> 键盘。

          顺便说一下,我上面描述的过程只是偶尔起作用。由于这个问题似乎经常发生,有没有办法最终一劳永逸地解决它?

          【讨论】:

            【解决方案5】:

            微软承认并描述了这个问题,这里: http://support.microsoft.com/kb/982551/

            他们发布了一个热修复程序,您可以从以下位置获取: http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=982551&kbln=en-us

            (您必须提供电子邮件地址,然后他们会向您发送受密码保护的 HotFix 安装程序)

            【讨论】:

            • 哇,微软花了 4 个月的时间来解决这个问题。你会认为这个人会成为他们名单的首位。他们确实在那边使用 Visual Studio,不是吗?
            • 4 个月比 M$ 快...花了 6 到 8 年的时间来修复他们的 Internet Explorer 中的几个关键安全性...
            • KB 982551 似乎没有 64 位 XP 的下载
            【解决方案6】:

            这里提供了一些很好的解决方案。

            另一种选择:不是通过按 SHIFT-F5 来停止调试会话,而是按 CTRL-C,这会导致程序正常结束,从而消除问题的根源。

            【讨论】:

              【解决方案7】:

              我确实看到了一些奇怪的现象,句柄没有被释放并且任务管理器不能正常工作。我发现Process Explorer 做得很好,可以弄清楚孤立窗口、文件锁以及发生的通常奇怪的行为是怎么回事。

              【讨论】:

                猜你喜欢
                • 2012-04-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多