Windbg 如何消除与符号文件相关的警告/错误消息
我正在使用Windbg 如何消除与符号文件相关的警告/错误消息,windbg,symbols,dump,pykd,Windbg,Symbols,Dump,Pykd,我正在使用Windbg调试转储文件,并定期收到警告/错误消息,如下所示: *** WARNING: Unable to verify checksum for icuuc58.dll *** ERROR: Symbol file could not be found. Defaulted to export symbols for icuuc58.dll - 为了避免这些问题,我已经尝试继续我的整个处理过程,包括: !sym prompts off !sym quiet 但警告/错误信息
Windbg
调试转储文件,并定期收到警告/错误消息,如下所示:
*** WARNING: Unable to verify checksum for icuuc58.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for icuuc58.dll -
为了避免这些问题,我已经尝试继续我的整个处理过程,包括:
!sym prompts off
!sym quiet
但警告/错误信息不断出现
在第一次回复后编辑(在第二次编辑中确认)
我用.outmask-6
和.outmask-206
做了几次尝试,但都或多或少失败了。这意味着什么:
.reload -f => a lot of error/warning messages => normal behaviour
.outmask-6 or .outmask-206
.reload -f => no error/warning messages => Ok
.outmask-6 or .outmask-206
.reload -f => no error/warning messages => Ok
<execution of the whole script> => a lot of error/warning messages => NOK
就symsrv.ini
文件而言:我的计算机上没有这个文件,老实说,我不希望搜索符号加载可能导致问题的每个模块。我宁愿避免出现上述警告/错误消息
在深入了解问题后进行编辑
有一件事我还没有提到,那就是PYKD
用法:我正在研究heap_stat,这是一个基于PYKD的脚本,用于执行内存分析,我相信这里存在的问题,正如您在以下摘录中看到的:
脚本源代码:
dbgCommand(".outmask-206")
...
dprintln("1")
type_info = typeInfo(class_name)
dprintln("2")
脚本输出:
1
*** WARNING: Unable to verify checksum for icuuc58.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for icuuc58.dll -
在我看来,这意味着PYKD
typeInfo()
对象声明是禁用.outmask()
Windbg
命令的声明
@PYKD开发者:您能确认这一点吗?如果是,请为此添加一个
PYKD
问题?(我在上没有看到任何.outmask
相关问题)您可以使用.outmask-6或使用.outmask-206抑制结尾处的symsrv摘要和警告消息
0:049> .outmask-6
Client 02C95358 mask is 3F1
0:049> .reload /f
Reloading current modules
................................................................
............................................................
使用此选项时请小心,一些重要的错误消息也可能被抑制
如果您的意思是需要阻止symsrv访问ms symbol服务器并浪费时间
使用[Exclutions]部分设置symsrv.ini
cd windbg installation path
echo [exclusions] >> symsrv.ini
echo ic* >> symsrv.ini
outmask是全局设置
PYKD设置自己的输出掩码:
client->GetOutputMask(&oldMask);
client->SetOutputMask(DEBUG_OUTPUT_NORMAL|DEBUG_OUTPUT_ERROR|DEBUG_OUTPUT_WARNING|DEBUG_OUTPUT_DEBUGGEE );
到目前为止,我的问题有两个答案:
- 出掩蔽常规
命令输出Windbg
- 出掩蔽
命令输出PYKD
Windbg
outmasking,因为我使用的是PYKD
命令。我不能使用
PYKD
outmasking,因为我只是启动(数千个)PYKD
命令,每次都是打开和关闭一个单独的PYKD
会话,配置PYKD
outmask会大大降低我的应用程序的速度
因此,我决定采用另一种方法:我将确保PYKD
输出消息的格式非常具体(它将始终包含制表符),因此,我将决定只使用PYKD
消息(包含制表符的消息)
我已经测试过这种方法,我可以确认它工作得很好
谢谢您的帮助。如果在
之后强制重新加载符号(.reload
,.reload/s/f icuuc58.dll
,甚至可能是.reload/f
),它会改变吗!sym
command?感谢Blabb的光临。我已将我的问题编辑为对您的建议的回答。outmask是IDebugControl::ControlledOutput方法的一个参数。它是一个全局dbgeng!g_LogMask再次查看我在Hanks中编辑的gif以获得快速回复,但同时我发现这个问题似乎与PYKD有关。(我已经相应地更新了我的问题)谢谢你的回复,但是我在哪里可以找到有关此功能的文档?(这个client
变量是什么)我查看了API引用(),但没有找到它。它来自C源代码。它无法调优。我们可以更改它,但首先需要了解它的制作原因。请尝试更新pykd bootstarpper:
client->GetOutputMask(&oldMask);
client->SetOutputMask(DEBUG_OUTPUT_NORMAL|DEBUG_OUTPUT_ERROR|DEBUG_OUTPUT_WARNING|DEBUG_OUTPUT_DEBUGGEE );