Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Эта статья относится к: ✔️ пакету 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