Dominique
Dominique

Reputation: 17565

How to get rid of symbol file related warning/error messages

I'm debugging dumpfiles, using Windbg, and regularly I'm getting warning/error messages, like the following:

*** WARNING: Unable to verify checksum for icuuc58.dll
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for icuuc58.dll - 

In order to avoid those, I've already tried to proceed my whole processing with:

!sym prompts off
!sym quiet

But the warning/error messages keep arriving.

Edit after first reply (is confirmed in second edit)

I've done several attempts, using .outmask-6 and .outmask-206, but all of them more or less failed. What does that mean:

.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

I believe there are commands, which disable .outmask command. Can you confirm this and in case yes, is there a command like:

.outmask-206(global) (which applies for the whole Windbg session)

As far as the symsrv.ini file is concerned: I don't have this file on my computer, and honestly I prefer not to be searching for every module which symbol loading might cause problems. I'd prefer just to avoid the mentioned warning/error messages.

Edit after more insight on the issue

One thing I didn't mention yet, is the PYKD usage: I'm working on heap_stat, a script, based on PYKD, for performing memory analysis, and I believe the problem in here, as you can see in following excerpt:

Script source code:

dbgCommand(".outmask-206")
...
dprintln("1")
type_info = typeInfo(class_name)
dprintln("2")

Script output:

1
*** WARNING: Unable to verify checksum for icuuc58.dll
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for icuuc58.dll - 

In my opinion, this means that the PYKD typeInfo() object declaration is the one, disabling the .outmask() Windbg command.

@PYKD developer: can you confirm this and if yes, add a PYKD issue for this? (I didn't see any .outmask related issue on the PYKD issues homepage)

Upvotes: 2

Views: 615

Answers (3)

Dominique
Dominique

Reputation: 17565

Until now, there've been two answers to my question:

  • Outmasking general Windbg command output
  • Outmasking PYKD command output

I can't use general Windbg outmasking, as I'm using PYKD commands.
I can't use PYKD outmasking, as I'm just launching (thousands of) PYKD commands, which are, every single time, opening and closing a separate PYKD session, and configuring the PYKD outmask would slow down my application too much.

Therefore I've decided to go for another approach: I'll make sure that the PYKD output messages' format is so specific (it will always contain a TAB character) that, instead of not using the error messages, I'll decide only to use the PYKD messages (the ones, containing the TAB characters).

I've tested this approach and I can confirm it's working fine.

Thanks for the help.

Upvotes: 0

ussrhero
ussrhero

Reputation: 606

PYKD set own output mask:

 client->GetOutputMask(&oldMask);  
 client->SetOutputMask(DEBUG_OUTPUT_NORMAL|DEBUG_OUTPUT_ERROR|DEBUG_OUTPUT_WARNING|DEBUG_OUTPUT_DEBUGGEE );

Upvotes: 1

blabb
blabb

Reputation: 9007

you can suppress the error / warning messages with .outmask-6
or with .outmask-206 to suppress the symsrv summary at the end and the warning messages

0:049> .outmask-6
Client 02C95358 mask is 3F1
0:049> .reload /f
Reloading current modules
................................................................
............................................................

be careful when using this some important error messages may also be suppressed

if you mean you need to stop symsrv from hitting the ms symbol server and wasting time

set up a symsrv.ini with [exclusions] section

cd windbg installation path

echo [exclusions] >> symsrv.ini
echo ic* >> symsrv.ini

outmask is global setting

enter image description here

Upvotes: 3

Related Questions