调试时Visual Studio极端延迟峰值

时间:2013-07-26 16:52:18

标签: visual-studio visual-studio-2012 visual-studio-debugging lag

当我在VS2012中调试我的应用程序并且它崩溃时,输入(鼠标和键盘)开始非常滞后,fps下降到大约0.3或更低,我甚至无法移动鼠标而不等待3秒......唯一的解决方案是做Shift-F5,这将结束调试,然后再次好了。

更有意思的是,唯一落后的是输入,整个背景非常精细,文本插入符号以正常速率闪烁,当鼠标越过按钮时,工具提示很好地动画。

我用allegro 4.2编译项目(我必须使用它,解释原因需要很长时间)。

我没有扩展,一个非常快的pc应该能够处理调试......

我对任何解决方案感兴趣,它可能是脏/黑客......如果需要,我当然可以提供更多信息。

感谢您的帮助。

编辑:通过论坛阅读我发现了一些关于“自动”窗口的信息或类似的东西(不记得确切,再也找不到它),这正在做一些“后台任务”并导致滞后。 ..你认为在单独的核心上运行它会解决这个问题吗?

2 个答案:

答案 0 :(得分:8)

在遇到与原始输入API相关的断点时发生的多秒停顿故事:http://the-witness.net/news/2012/12/finding-and-fixing-a-five-second-stall/

自从我上次见到这种事以来已经很长时间了,但我似乎记得我的案例中的罪魁祸首是DirectInput。 (考虑到上面的故事,这是有道理的,因为DirectInput长期以来一直是原始输入API的包装。)我认为解决方案是使用模拟键盘和鼠标设备而不是默认设备,你可以通过将其中一个模拟设备GUID传递给IDirectInput8_CreateDevice。这里简要讨论:http://msdn.microsoft.com/en-us/library/windows/desktop/ee416845%28v=vs.85%29.aspx

(我不记得合作和排他性水平是否有所作为 - 尝试更改这些也是值得的。)

答案 1 :(得分:1)

我最近在调试游戏时遇到了以下类似问题:

  • 打断点,暂停程序进行调试。
  • 现在按任意键大约需要1秒钟来“处理”。它将被缓冲并缓慢地一个接一个地发送到现在处于活动状态的任何窗口。

就我而言,该应用程序安装了带有SetWindowsHookEx(WH_KEYBOARD_LL, ...)的低级键盘挂钩。删除此选项后(对于!NDEBUG仅根据您的意愿进行构建),输入延迟消失了。

我想在您的应用程序暂停时,挂钩根本无法响应,最终系统会跳过它(在〜1秒超时后)。实际上,接受的答案中的链接提到了此问题,但是我认为我在这里解释了它的核心,也是因为该链接在我修复它之前就失效了。

尝试在您的应用程序或依赖项中找到这样的挂钩,并检查将其删除是否有帮助。由于您也提到过鼠标也会发生这种情况,因此还要检查(低级)鼠标钩(WH_MOUSE_LL)。可用的挂钩为listed on MSDN