Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья относится к: ✔️ пакету SDK для .NET Core 3.0 и более поздних версий
Сбор дампов в Linux
Подсказка
Часто задаваемые вопросы о сборе дампов, анализе и других предостережениях см. в разделе "Дампы: вопросы и ответы".
Ниже приведены два рекомендуемых способа сбора дампов в Linux:
-
dotnet-dumpСредство CLI - Переменные среды, которые собирают дампы при сбоях
Анализ дампов в 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, созданная из исходного кода), может потребоваться скопировать файлы, перечисленные выше, из среды, в которой был создан дамп. Если файлы не находятся рядом с файлом дампа, вы можете использовать команду setclrpath <path> LLDB/SOS, чтобы задать путь, из которого их следует загружать, и команду 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 analyze. Используйте версию x64 dotnet-dump для дампов, собранных из среды Linux x64 или Arm64, и версии x86 для дампов, собранных из среды x86 Linux.
См. также
- dotnet-sos для получения дополнительных сведений об установке расширения SOS.
- Dotnet-symbol для получения дополнительных сведений об установке и использовании средства загрузки символов.
- Репозиторий диагностики .NET Core для получения дополнительных сведений об отладке, включая полезные вопросы и ответы.
- Установка LLDB для инструкций по установке LLDB на Linux или Mac.
- Практика и устранение неполадок в Linux для руководства по отладке аварийных дампов в Linux