调试本地进程时WinDbg变慢(跳过)

时间:2011-09-04 13:20:24

标签: debugging windbg

这真让我疯狂。我使用WinDbg作为我的主要调试器。 它用于调试本地服务(WinDbg在本地运行,在同一台机器上调试服务)。 PDB文件存储在本地硬盘驱动器上。 源代码可通过SMB共享访问。

调试以突发方式工作,有时它流畅,大多数时候我一直看到令人难以置信的恼人的“*忙碌*”消息,这几乎每次我执行“跳过”时都会发生。

我有什么想法可以加快速度?

由于

7 个答案:

答案 0 :(得分:1)

如果您有许多不合格的断点来跟踪工作区中保存的模块加载事件(通过bu创建),则可能会发生这种情况。
还值得检查网络连接和本地符号缓存大小

答案 1 :(得分:1)

我遇到了完全相同的问题,并且通过调整符号选项可以看到很大的改进。具体来说,SYMOPT_NO_PUBLICS选项似乎是最重要的,但我调整了一些其他相关选项。我做了以下......

.symopt-为0x4 .symopt + 0x100的 .symopt +为0x8000 .symopt-0x10000的

......这是:

-SYMOPT_DEFERRED_LOADS + SYMOPT_NO_UNQUALIFIED_LOADS + SYMOPT_NO_PUBLICS -SYMOPT_AUTO_PUBLICS

毕竟,我的symopt位掩码值为0x80028333,我现在将其用作WinDbg命令行选项,如:

windbg.exe -sflags 0x80028333

我还没有发现这种方法是否有任何缺点。也许在某些情况下使用SYMOPT_NO_PUBLICS导致缺少信息,但到目前为止它对我来说效果很好,而且它肯定更快。

WinDbg Symbol Options MS Documentation

答案 2 :(得分:0)

当打开多个工具窗口(本地人,手表,调用堆栈)时,通常会发生这种情况。如果打开这些窗口,WinDbg将花费周期来使用每个“step-over”命令上的慢符号查找来更新所有窗口。

在这方面,仅使用命令行(ntsd)调试器要快得多。

答案 3 :(得分:0)

如果它正在慢慢从互联网上提取Windows符号文件,请考虑将所有这些文件下载到硬盘驱动器并将WinDbg指向其上的位置。最好将服务的符号文件和源文件放在本地驱动器上。

答案 4 :(得分:0)

要尝试的几件事情:

  • 使用!sym noisy命令显示有关windbg引用的图像和pdbs的更多详细信息。您可能会发现它访问网络的次数超出了您的预期,或者网络服务器不可用且请求超时
  • 确保您的符号路径有cache in it
  • 在本地获取源代码的副本并添加到源路径

答案 5 :(得分:0)

而不是使用'step-over',在下一个命令或甚至硬件断点(使用ba)上设置断点

答案 6 :(得分:0)

当您的符号路径包含大型文件存储时,WinDbg可能需要很长时间才能搜索不存在的符号。您可以通过运行Process Monitor并观察WinDbg正在进行的文件操作,通过用户 eran 建议来诊断此行为。

这对我们的组织来说是一个极端的痛点,但我在这个问题中找到了详细的解决方法:“WinDbg takes extremely long time to loading symbols; is searching every directory in large network UNC symbol store