WinDbg: APPLICATION_HANG_WRONG_SYMBOLS - PullRequest
       53

WinDbg: APPLICATION_HANG_WRONG_SYMBOLS

3 голосов
/ 28 апреля 2011

Я довольно новичок в WinDbg и пытаюсь найти ошибку, из-за которой мое приложение зависло без видимой причины.Я не уверен, что все делаю правильно, но я понимаю, что мне нужны оба символа для системных библиотек, а также .exe, который я отлаживаю.Таким образом, я установил путь к своему символу следующим образом:

srv*c:\websymbols*http://msdl.microsoft.com/download/symbols;S:\MY\PATH

Второй путь, указывающий на папку, в которую я поместил файл .pdb, созданный VS.Я уверен, что это правильный файл .pdb, но он был построен на другой архитектуре (не уверен, что это проблема).Я хотел бы увидеть полную трассировку стека для начала, поэтому я запустил! Analysis-v.Вывод выглядит как это .Как вы можете видеть, в нем перечислены APPLICATION_HANG_WRONG_SYMBOLS в качестве основной проблемы.Поэтому я запустил .reload / f, выдав мне этот вывод .У меня нет символов для dnAnalytics или Vertec.Interop, поэтому эти ошибки имеют смысл, но есть некоторые пропущенные контрольные суммы, и iphlpapi.pdb не найден.

Поэтому у меня возникнут следующие вопросы: почему WinDBG отображает неправильные символы какосновная проблема, хотя я уверен, что у меня есть правильный файл .pdb?(Я использую WinDBG на той же машине, где был создан дамп).В какой степени я могу доверять трассировке стека, даже если предположил, что мои символы неверны?Кто-нибудь видит очевидную проблему, которая может вызвать зависание в моем приложении из трассировки стека уже?Любые указатели оценены!

Ответы [ 2 ]

4 голосов
/ 29 апреля 2011

Возможно, здесь «неправильные символы», потому что вы используете 64-битный CLR с версией ниже 4.0, а расширение! Analyse имеет некоторые проблемы с декодированием смешанного собственного / управляемого стека.

ПочемуWinDBG в этом случае ищет символы BJM.exe на сервере Microsoft?

Это потому, что вы помещаете сервер символов перед локальным путем в пути символа.Windbg не знает, какой модуль у вас, а какой у Microsoft.Он просто ищет файл PDB для модуля в порядке, заданном путем символа.

В какой степени я могу доверять трассировке стека, даже если мои символы, по-видимому, неверны?

Стеки на x64 очень надежны, так как обход стека не требует символов.Символы являются надежными (то есть у вас нет неправильных символов), если вы не заставили windbg игнорировать неправильную метку времени / контрольную сумму с .reload /f /i

В некоторых случаях символ адреса -> может показаться неправильным.Обычно это происходит из-за небольших функций, имеющих одинаковый код (очень часто встречается в коде C ++, если функции являются виртуальными или код не оптимизирован)

0 голосов
/ 28 апреля 2011

Попробуйте использовать !sym noisy, чтобы получить больше информации о том, на что он на самом деле смотрит ( документы ). !itoldyouso также может быть полезно здесь ( ссылка )

...