LINUX.ORG.RU

Как снять backtrace в данном случае

 


0

1

Вот здесь, в Arch Wiki, описано как снимать backtace - https://wiki.archlinux.org/index.php/Debug_-_Getting_Traces

А у меня вот здесь https://bugs.archlinux.org/task/48772#comment145787 возникла проблема, когда меня попросили снять backtrace с библиотеки cogl.

Собственно, я не понял что делать начиная вот с этого момента:

# gdb /path/to/file

У меня проблема не в исполняемом файле, а в библиотеке. Какой файл ее использует - я не знаю. Но подозреваю, что gnome-shell. Но даже, если это так, как запустить всю DE из под gdb, чтобы получить этот backtrace ?

★★

Ответ на: комментарий от lemas

К какому именно (в моем случае) ?

Сперва ищешь PID нужного процесса, например вот так:
lsof <path/to/library>

Затем цепляешься вот так:
gdb -p <pid>

И делаешь что хочешь с процессом.

V1KT0P ★★
()
Ответ на: комментарий от V1KT0P

Процесс оказался gnome-shell. Как я понял, цепляться к нему работая в gnome не лучшая идея? Надо делать это из отдельной консоли?

lemas ★★
() автор топика
Ответ на: комментарий от V1KT0P

А я запустил из gnome-terminal gdb и все тут же повисло. Музыка продолжала играть. Переключиться на другую консоль, чтобы перегрузиться смог.

lemas ★★
() автор топика
Ответ на: комментарий от lemas

А я запустил из gnome-terminal gdb и все тут же повисло.

Я когда баловался с написанием драйверов выяснил что USB драйвер очень просто может намертво подвесить Linux =).

V1KT0P ★★
()
Ответ на: комментарий от V1KT0P

USB тот еще адЪ в линухе... Достаточно почитать маны по созданию всяких live флешек с дистрибутивами и советы в духе «а теперь создаем еще один новый раздел, но т.к. кернел его не увидит, надо перегрузиться...». Не понимаю такого.

Gonzo ★★★★★
()

У тебя ведь арч с systemd? Тогда тебе достаточно просто настроить systemd на сохранение core-дампов, спровоцировать падение и уже постфактум открыть в gdb нужный дамп.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Даже более того, в последних systemd это по умолчанию включено. Сделай coredumpctl list. Последние дампы в конце. Если есть — coredumpctl gdb.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)

Если в системе systemd, то надо настроить сбор core файлов: https://www.freedesktop.org/software/systemd/man/coredump.conf.html#Description так, чтобы они создавались в отдельной директории. Потом подождать, пока программа рухнет, и загрузить корку в gdb:

gdb /path/to/executable/file /path/to/coredump/file

И там уже можно получать бектрейсы.

Для упрощения сбора данных надо в консоли gdb ввести команды set logging on (включает лог в файл), set logging file logfilename.txt (меняет имя файла для лога на logfilename.txt) и set pagination off (чтобы не просил нажать Enter после каждого экрана).

i-rinat ★★★★★
()

Если у тебя Арч, то для дебага ещё нужно собрать пакеты которые дабажишь и зависимые с опцией:

options=(debug !strip)

Это и по твоей ссылке написано.

Вообще была проблема у меня gnome-shell ругался на gnome-session в процессе тестирования 3.20 и я спросил как сам шелл запустить в gdb. Мне загоняли что-то про второй девайс, ssh и прочие сложности. Я так и не въехал, а баг оформил другой человек.

anonymous
()

А я думаю чего у меня нет такой проблемы как в баге твоём. А у меня nouveau и там же пишут что с ним этой проблемы нет.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.