【问题标题】:Configure windbg not to show "wrong symbols" for modules that have no symbols将 windbg 配置为不为没有符号的模块显示“错误符号”
【发布时间】:2015-12-21 15:50:57
【问题描述】:

如果我有一个 win 应用程序的转储,我如何将 windbg 调试器配置为不会通过向我显示模块来“诱导我出错”,因为我没有任何私有符号,它知道最近的符号。我希望具有未知符号的函数只打印地址,而不是任何符号信息 + 偏移量,它没有相关性并且可能会混淆。例如:

 Plg!CopyPropertyHolder+0x42fae
 Plg!CopyPropertyHolder+0x43151
 Plg!CopyPropertyHolder+0x431d5
 Plg!GetWPXFilterVersion+0xe8

在这里您可以看到 CopyPropertyHolder,但在所有情况下,相应函数的起始符号都是未知的,而且地址是从已知的东西计算出来的这一事实对我没有帮助。

【问题讨论】:

  • windbg 使用 DLL 中的 EXPORT 作为开始并添加偏移量。我不知道这是否可以禁用。这对你来说真的很烦吗?

标签: debugging windbg


【解决方案1】:

您看到的是出口符号。确实,函数名不匹配,可能会产生误导。

使用.symopt+ 400 (SYMOPT_EXACT_SYMBOLS),您可以关闭导出符号(或者更好的是,打开精确符号):

0:000> k L3
[...]
02 00000000`0012c390 000007fe`e29cef0f Qt5Core!QEventDispatcherWin32::processEvents+0x2ba

0:000> .symopt+ 400
Symbol options are 0x30737:
[...]

0:000> k L3
[...]
02 00000000`0012c390 000007fe`e29cef0f Qt5Core+0x222b1a

【讨论】:

  • 正是我需要的。
猜你喜欢
  • 2011-01-01
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多