如何中止 WinDbg 中的长时间操作?

Posted

技术标签:

【中文标题】如何中止 WinDbg 中的长时间操作?【英文标题】:How can I abort a long operation in WinDbg? 【发布时间】:2010-09-16 12:21:36 【问题描述】:

WinDbg 通常会进入 *忙碌* 执行操作的状态。

这通常是由于我在尝试 dt some_variable_itll_never_find 时犯的一些错误,或者在没有符号的地方设置断点,或者我在这个工具上犯的 1000 个其他错误。

有没有办法取消当前的操作?

【问题讨论】:

说,你确定 CRTL+Break 确实会中止当前运行的命令吗?我不记得它对我有用的单个实例(我总是必须等待命令完成)。 @MartinBa 我不确定它是否总是有效,但有时会。 有趣的是,在最后几天我不得不使用 WinDbg,当我在长时间运行的!locks 命令中使用它时,它确实 工作了。也许是某个版本的问题,我认为它不起作用的是我仍然安装在一台开发机器上的 v6(与我上周使用的当前 v12 相比)。 【参考方案1】:

我现在没有工具,但据我记得应该是 Ctrl+Break。

【讨论】:

谢谢!似乎这个组合键在我使用的 Virtual PC 上不起作用——这就是为什么当我在 Google 上找到一些关于它的东西时我拒绝了这个建议的原因。在我的“真实”PC 上看起来不错。 使用菜单:Debug -> Break(由于某种原因键盘快捷键对我不起作用)【参考方案2】:

有时 Ctrl+Break 不起作用。此时您可以使用 Debug 菜单 -> Break。

谢谢

【讨论】:

【参考方案3】:
Ctrl+Break 

将强制 Debug 中断所有,但如果你输入了一些需要很长时间的 windbg 命令并且你想杀死它,那么你应该输入

Ctrl+c

这将杀死当前正在运行的命令。

【讨论】:

【参考方案4】:

您可能在符号路径中有“http://msdl.microsoft.com/download/symbols”。 Windbg 将尝试在 Microsoft 站点上找到您的所有 PDB :-(. 按 Ctrl+Break 不够快。 我通常做的就是拔掉网线,直到Windbg唤醒。 请注意,如果 Windbg 真的在下载它的操作系统 DLL,则 DLL 会被篡改。您将需要 .reload /o 来修复该 DLL。我只有在知道所有 OS DLL 都已下载后才拔掉插头。

首先要避免这种延迟,请取消选中“调试”菜单下的“解决不合格符号”。

【讨论】:

以上是关于如何中止 WinDbg 中的长时间操作?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Web API + 长时间运行的操作取消

中止时如何使用 SIGINT 而不是 SIGTERM 终止 Jenkins 作业中的 psql 进程?

是否可以使用 iBATIS 中止长时间运行的查询?

如果 XHR 获得 abort(),我如何终止长时间运行的 Django 请求?

中止正在运行长查询的线程

为啥 AsyncTask 不适合长时间运行的操作