Visual Studio 2008 не загружает символы при отладке .DMP - PullRequest
3 голосов
/ 17 мая 2011

Я пытаюсь отладить приложение C # из файла .DMP, и у меня есть исполняемый файл, библиотеки DLL и PDB в папке с именем «MyFolder». Я установил каталог, содержащий исходный код, в C: \ MyFolder \, но при попытке отладки он говорит мне, что:

"Ни один символ не загружен ни для одного кадра стека вызовов. Исходный код не может быть отображен."

Когда я открываю информацию о загрузке символа, в ней говорится, что не найдены следующие PDB:

C: \ Windows \ System32 \ kernel32.pdb: не удается найти или открыть файл PDB.
C: \ MyFolder \ kernel32.pdb: не удается найти или открыть файл PDB.
C: \ MyFolder \ symbols \ dll \ kernel32.pdb: Не удается найти или открыть файл PDB.
C: \ MyFolder \ dll \ kernel32.pdb: не удается найти или открыть файл PDB.
C: \ MyFolder \ kernel32.pdb: не удается найти или открыть файл PDB.
C: \ Windows \ symbols \ dll \ kernel32.pdb: Не удается найти или открыть файл PDB.
C: \ Windows \ dll \ kernel32.pdb: не удается найти или открыть файл PDB.
C: \ Windows \ kernel32.pdb: Не удается найти или открыть файл PDB.

Мои PDB находятся в правильной папке и имеют метки времени с одинаковыми временем и датой. Кто-нибудь знает, что здесь происходит? Как правильно загружать символы?

Как проверить, что символы моего приложения действительно загружены (чтобы устранить их как проблему)? Я проверил Модули, и похоже, что все библиотеки DLL и исполняемый файл моего проекта не могут загрузить символы, в частности, статус символа «Нет собственных символов в файле символов» ... когда я щелкаю правой кнопкой мыши по элементу и я выберите «Загрузить символы из -> Путь символа», и я выбираю PDB C: \ MyFolder \ MyApplication.pdb, после чего он сообщает, что «Файл символов для MyApplication.pdb не соответствует модулю».

Ответы [ 2 ]

2 голосов
/ 17 мая 2011

Похоже, что дамп-файл представляет собой мини-дамп с собственным кодом, а не мини-дамп управляемого кода, поскольку символы для всех этих библиотек DLL обычно не являются критическими для управляемой отладки, если вы не отлаживаете приложение смешанного режима, отладку в вызовах Win32или отладка через управляемые / неуправляемые границы.

Это зависит от того, как был создан мини-дамп.Если он находился на другом компьютере в другой операционной системе или в пакете обновления, то вам может потребоваться установить путь к символам для получения точных PDB системных DLL-файлов с другого компьютера, а не сборок и символов вашего приложения.Ваш опыт управляемой отладки улучшится, если эти неуправляемые символы верны.Чтобы еще больше усложнить ситуацию, у вас есть «микроверсии» .NET и собственные образы, с которыми нужно бороться, чтобы заставить работать трассировки стека.

0 голосов
/ 21 июня 2011

Вы должны убедиться, что:

  • Исполняемые файлы / библиотеки DLL и PDB имеют одинаковую сборку.PDB внутренне использует GUID для определения правильности связанных EXE / DLL.В противном случае он не будет загружать символы.Это не VS само по себе, а из DbgHelp.DLL.
  • Убедитесь, что вы правильно используете набор исходных файлов.Даже если параметр «Исходный файл должен соответствовать» равен unset в параметрах отладки VS, VS не заботится о загрузке файлов .DMP - он не загружает символы, если исходные файлы не совпадают.1009 *
...