Как избавиться от предупреждений / сообщений об ошибках, связанных с символьным файлом
Я отлаживаю дампфайлы, используя 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
Я считаю, что есть команды, которые отключают .outmask
команда. Можете ли вы подтвердить это, и если да, есть ли такая команда:
.outmask-206(global) (which applies for the whole Windbg session)
Насколько 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
связанная проблема на PYKD
выдает домашнюю страницу)
3 ответа
До сих пор было два ответа на мой вопрос:
- Генерал маскировки
Windbg
вывод команды - Outmasking
PYKD
вывод команды
Я не могу использовать общий Windbg
перебор, как я использую PYKD
команды.
Я не могу использовать PYKD
изобличение, как я только запускаю (тысячи) PYKD
команды, которые каждый раз открывают и закрывают отдельный PYKD
сеанс и настройка PYKD
outmask слишком сильно замедлит мое приложение.
Поэтому я решил пойти по другому пути: я позабочусь о том, чтобы PYKD
Формат выходных сообщений настолько специфичен (он всегда будет содержать символ табуляции), что вместо того, чтобы не использовать сообщения об ошибках, я решу использовать только PYKD
сообщения (те, которые содержат символы TAB).
Я протестировал этот подход и могу подтвердить, что он работает нормально.
Спасибо за помощь.
Вы можете подавить сообщения об ошибках / предупреждениях с помощью .outmask-6
или с .outmask-206 для подавления сводки symsrv в конце и предупреждающих сообщений
0:049> .outmask-6
Client 02C95358 mask is 3F1
0:049> .reload /f
Reloading current modules
................................................................
............................................................
будьте осторожны при использовании этого некоторые важные сообщения об ошибках также могут быть подавлены
если вы имеете в виду, вам нужно остановить symsrv от попадания на сервер символов MS и тратить время
настроить symsrv.ini с разделом [exclusion]
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 );