Отладка дампов Linux
Эта статья относится к: ✔️ пакету SDK для .NET Core 3.0 и более поздних версий
Сбор дампов в Linux
Совет
Часто задаваемые вопросы о сборе дампов, анализе и других предостережениях см. в разделе "Дампы: вопросы и ответы".
Два рекомендуемых способа сбора дампов в Linux:
- Средство CLI
dotnet-dump
- Переменные среды для сборки дампов при аварийном завершении
Анализ дампов в Linux
После сбора дампа его можно проанализировать с помощью dotnet-dump
средства с dotnet-dump analyze
помощью команды. Этот шаг анализа должен выполняться на компьютере с той же архитектурой и дистрибутивом Linux, что и среда, в которой был записан дамп.
Это dotnet-dump
средство поддерживает отображение сведений о коде .NET, но не полезно для понимания проблем с кодом для других языков, таких как C и C++.
Кроме того, LLDB можно использовать для анализа дампов в Linux, что позволяет анализировать управляемый и машинный код. LLDB использует расширение SOS для отладки управляемого кода. Средство dotnet-sos
CLI можно использовать для установки SOS, в котором содержится много полезных команд для отладки управляемого кода. Чтобы проанализировать дампы .NET Core, для LLDB и SOS требуются следующие двоичные файлы .NET Core из среды, в которой был создан дамп.
- libmscordaccore.so
- libcoreclr.so
- dotnet (узел, используемый для запуска приложения)
В большинстве случаев эти двоичные файлы можно скачать с помощью средства dotnet-symbol
. Если необходимые двоичные файлы невозможно загрузить с помощью dotnet-symbol
(например, если используется частная версия .NET Core, построенная на основе источника), может потребоваться скопировать перечисленные выше файлы из среды, в которой был создан дамп. Если файлы не расположены вместе с файлом дампа, можно использовать команду LLDB/SOS setclrpath <path>
, чтобы задать путь, из которого они должны быть загружены, и setsymbolserver -directory <path>
, чтобы задать путь для поиска файлов символов.
После того как необходимые файлы будут доступны, можно загрузить дамп в LLDB, указав узел dotnet в качестве исполняемого файла для отладки:
lldb --core <dump-file> <host-program>
В предыдущей команде <dump-file>
используется путь к дампу для анализа и <host-program>
является собственной программой, которая запустила приложение .NET Core. dotnet
Обычно это двоичный файл, если приложение не является автономным, в этом случае это имя приложения без расширения .dll.
После запуска LLDB может потребоваться использовать команду setsymbolserver
, чтобы указать правильное расположение символов (setsymbolserver -ms
, чтобы использовать сервер символов корпорации Майкрософт, или setsymbolserver -directory <path>
для указания локального пути). Чтобы загрузить собственные символы, выполните команду loadsymbols
. На этом этапе можно использовать команды SOS для анализа дампа.
Примечание.
LLDB можно установить с помощью команды. sudo apt-get install lldb
Анализ дампов в Windows
Дампы, собранные с компьютера Linux, также можно анализировать на компьютере с Windows с помощью Visual Studio, Windbg или средства dotnet-dump . Visual Studio и Windbg могут анализировать собственный и управляемый код, а dotnet-dump анализирует только управляемый код.
Примечание.
Visual Studio версии 16.8 и более поздних версий позволяет открывать и анализировать дампы Linux, созданные в .NET Core 3.1.7 или более поздней версии.
- Visual Studio — см. руководство по отладке дампа Visual Studio.
- Windbg — вы можете отлаживать дампы Linux в windbg , используя те же инструкции , которые будут использоваться для отладки дампа в пользовательском режиме Windows. Используйте версию x64 windbg для дампов, собранных из среды Linux x64 или Arm64, и версию x86 для дампов, собранных из среды x86 Linux.
- dotnet-dump — просмотр дампа с помощью команды анализа dotnet-dump. Используйте версию x64 dotnet-dump для дампов, собранных из среды Linux x64 или Arm64, и версии x86 для дампов, собранных из среды x86 Linux.
См. также
- dotnet-sos для получения дополнительных сведений об установке расширения SOS.
- dotnet-symbol для получения дополнительных сведений об установке и использовании средства скачивания символов.
- Репозиторий диагностики .NET Core для получения дополнительных сведений об отладке, включая полезные часто задаваемые вопросы.
- Установка LLDB для получения инструкций по установке LLDB в Linux или Mac.
- Рекомендации и устранение неполадок в Linux для руководства по отладке аварийных дампов в Linux