| Summary: | Просьба поднять версию .Net Core 6 с 6.0.7 до последней (текущая 6.0.11) | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Иван Скородумов <skorodumov> |
| Component: | dotnet-6.0 | Assignee: | Nobody's working on this, feel free to take it <nobody> |
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P5 | CC: | cas |
| Version: | unstable | ||
| Hardware: | x86 | ||
| OS: | Linux | ||
|
Description
Иван Скородумов
2022-11-23 14:04:57 MSK
Дополнительно просьба добавить пакет с символьной информацией для отладки dotnet приложений в lldb Речь про файлы, которые для поддерживаемых Microsoft платформ загружаются с помощью команды dotnet-symbol --host-only (Ответ для Иван Скородумов на комментарий #1) > Дополнительно просьба добавить пакет с символьной информацией для отладки > dotnet приложений в lldb > Речь про файлы, которые для поддерживаемых Microsoft платформ загружаются с > помощью команды > dotnet-symbol --host-only То есть скачиваемую этой командой информацию добавить в пакет? Попробуем. (In reply to Vitaly Lipatov from comment #2) > (Ответ для Иван Скородумов на комментарий #1) > > Дополнительно просьба добавить пакет с символьной информацией для отладки > > dotnet приложений в lldb > > Речь про файлы, которые для поддерживаемых Microsoft платформ загружаются с > > помощью команды > > dotnet-symbol --host-only > То есть скачиваемую этой командой информацию добавить в пакет? Попробуем. Да, всё верно! Спасибо. (Ответ для Иван Скородумов на комментарий #1) > Дополнительно просьба добавить пакет с символьной информацией для отладки > dotnet приложений в lldb > Речь про файлы, которые для поддерживаемых Microsoft платформ загружаются с > помощью команды > dotnet-symbol --host-only «Загрузка символов поддерживается только для официальных версий среды выполнения .NET Core, полученных по официальным каналам, таким как официальный веб-сайт и источники по умолчанию в сценариях установки dotnet. Ошибка 404 при скачивании файлов отладки может указывать на то, что дамп был создан с помощью среды выполнения .NET Core из другого источника, например из исходного кода, созданного локально или для конкретного дистрибутива Linux, либо с сайтов сообщества, таких как archlinux. В таких случаях файл, необходимый для отладки (dotnet, libcoreclr.so и libmscordaccore.so), должен быть скопирован из этих источников или из среды, в которой был создан файл дампа.» https://learn.microsoft.com/ru-ru/dotnet/core/diagnostics/dotnet-symbol Может быть вам просто нужно поставить соответствующие пакеты -debuginfo? Для того, чтобы lldb просто загрузил дамп или подключился к процессу dotnet, нужно иметь отладочную информацию по загрузчику dotnet. Далее начинает работать расширение sos, позволяющее отлаживать управляемый код. Как вы и написали утилита dotnet-symbol, не может загрузить отладочные символы для dotnet на Alt Linux, поэтому мы просим включить их в отдельный пакет или в один из существующих пакетов установки dotnet sdk для Alt Linux https://learn.microsoft.com/en-us/troubleshoot/developer/webapps/aspnetcore/practice-troubleshoot-linux/lab-1-2-analyze-core-dumps-lldb-debugger «The --host-only parameter will download only the host program. This is all that lldb needs to start debugging the ASP.NET Core application.» «SOS is a cross-platform extension that can be loaded by WinDbg or a cdb debugger on Windows and by lldb on Linux and macOS.» (Ответ для Иван Скородумов на комментарий #5) > Для того, чтобы lldb просто загрузил дамп или подключился к процессу dotnet, Можете привести пример отладки базового приложения, создаваемого через $ dotnet new console ? Какая именно команда? 1. Установка lldb, .net и расширение SOS
# apt-get install lldb
# apt-get install dotnet-sdk-6.0
# dotnet tool install -g dotnet-sos
# export PATH="$PATH:/root/.dotnet/tools"
# dotnet-sos install
2. Настройка coredump
# apt-get install systemd-coredump
# systemctl start systemd-coredump.socket
закомментировать следующую строку в /etc/profile: 'ulimit -Sc 0 >/dev/null 2>&1'
закомментрировать в файле /etc/security/limits.d/50-defaults.conf строку: '* soft core 0'
# reboot
3. Тестовое приложение.
# mkdir ~/test_debug
# cd ~/test_debug
# dotnet new console
# cat <<EOT > Program.cs
Console.WriteLine("Hello, World!");
string msg = null;
List<string> memoryleak = new();
while (true)
{
memoryleak.Add($"Current time is: {DateTime.Now:O}");
Thread.Sleep(100);
if (memoryleak.Count > 200)
{
// NullReferenceException через 20 секунд
//долго, чтобы можно было еще Attach проверить.
Console.WriteLine(msg.Length);
}
}
EOT
# dotnet build
4. Генерация dump-а при падении приложения
# dotnet ./bin/Debug/net6.0/test_debug.dll &
Hello, World!
… 20 seconds later
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
at Program.<Main>$(String[] args) in /root/test_debug/Program.cs:line 12
[1]+ Aborted (core dumped) dotnet ./bin/Debug/net6.0/test_debug.dll
# coredumpctl list
TIME PID UID GID SIG COREFILE EXE
Mon 2023-01-09 13:44:13 UTC 4055 0 0 6 present /usr/lib64/dotnet/dotnet
# coredumpctl dump 4055 -o test_debug.core.4055
…
5. Отладка полученного дампа
# export DOTNET_ROOT=/usr/lib64/dotnet
# lldb --core test_debug.core.4055 dotnet
Current symbol store settings:
-> Cache: /root/.dotnet/symbolcache
-> Server: https://msdl.microsoft.com/download/symbols/ Timeout: 4 RetryCount: 0
(lldb) target create "dotnet" --core "test_debug.core.4055"
Core file '/root/test_debug/test_debug.core.4055' (x86_64) was loaded.
(lldb) pe
Failed to load data access module, 0x80004002
Can not load or initialize libmscordaccore.so. The target runtime may not be initialized.
For more information see https://go.microsoft.com/fwlink/?linkid=2135652
PrintException failed
Если решение этой проблемы займет много времени, то лучше ее не решать сразу, а завести отдельный тикет.
Коллеги, добрый день! Скажите пож есть информация по указанному вопросу? "Просьба поднять версию .Net Core 6 с 6.0.7 до последней (текущая 6.0.11) https://dotnet.microsoft.com/en-us/download/dotnet/6.0" (Ответ для Иван Скородумов на комментарий #8) > Коллеги, добрый день! > Скажите пож есть информация по указанному вопросу? > "Просьба поднять версию .Net Core 6 с 6.0.7 до последней (текущая 6.0.11) > https://dotnet.microsoft.com/en-us/download/dotnet/6.0" https://packages.altlinux.org/ru/sisyphus/srpms/dotnet-runtime-6.0/ Версия: 6.0.12-alt2 (In reply to Andrey Cherepanov from comment #9) > (Ответ для Иван Скородумов на комментарий #8) > > Коллеги, добрый день! > > Скажите пож есть информация по указанному вопросу? > > "Просьба поднять версию .Net Core 6 с 6.0.7 до последней (текущая 6.0.11) > > https://dotnet.microsoft.com/en-us/download/dotnet/6.0" > > https://packages.altlinux.org/ru/sisyphus/srpms/dotnet-runtime-6.0/ > > Версия: 6.0.12-alt2 Это Sisyphus, есть возможность добавить в p9 и в p10? |