2012-06-24 4 views
3

Я пытаюсь отслеживать возможную утечку памяти в очень большом приложении ASP.NET. Я пытаюсь ознакомиться с WinDBG перед тем, как попытаться использовать этот инструмент в живой среде.WinDBG - путь символов не включен

Я следую инструкциям в следующей статье, что было очень полезно: http://humblecoder.co.uk/uncategorized/spotting-a-memory-leak-with-windbg-in-net. Я могу создать файл «дампа памяти» процесса ASP.NET и показать, что делегат вызывает утечку памяти, как указано в статье. Я ссылаюсь на параграф в статье, которая начинается: «Далее нам нужны символы». Я не добавлял файлы символов, используя File \ Symbol File Path; в WinDBG, и все же я все еще могу отлаживать приложение и выполнять оставшиеся шаги статьи. Не нужны ли пути символов в приложении ASP.NET?

ответ

2

Поскольку сборки .NET содержат метаданные, включая имя каждого метода и его параметры, символы не нужны для получения считываемой трассировки стека управляемого потока.

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

1

Как говорит Майкл, для управляемого кода символы строго необходимы, поскольку большая часть соответствующей информации доступна во время выполнения в качестве метаданных, но если вы копаете в собственный код, очень полезно иметь символы.

Для многих сценариев вы можете просто сделать .symfix, который даст WinDbg возможность использовать общедоступный сервер символов Microsoft. Это даст вам доступ к символам для всех вызовов CLR и Win32 в вашем коде. Не забудьте сделать .reload, если вы установили путь.

Если ваш код содержит собственные сборки не Microsoft, вам необходимо добавить расположение соответствующих файлов PDB в путь символа. Используйте команду .sympath.

Для устранения неполадок с использованием символов используйте команду !sym noisy.

Для получения дополнительной информации see this.

Смежные вопросы