配置 windbg 不为没有符号的模块显示 "wrong symbols"

Configure windbg not to show "wrong symbols" for modules that have no symbols

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

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

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

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

使用 .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