LINUX.ORG.RU

musl + gdb

 ,


0

2

musl изменяет стек так, что gdb от этого крышу сносит. В итоге, в выводе backtrace не отображаются символы, только адреса. Может, кто-нибудь подскажет, как решить? Вроде как @Iron_Bug использует musl. Всё на debian, musl 1.1.21.

Добавлю, что при статической сборке результат тот же.

Пробовал делать breakpoint на функцию abort (собственно, мне нужно отлавливать сработавшие assert-ы, а abort вызывается из assert), тогда gdb показывает символы, но только если assert() вызван из главного потока. Если из других – gdb показывает только адреса.



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

Может musl просто собран с -fomit-frame-pointer и без отладочной информации, что сильно усложняет раскрутку стека?

xaizek ★★★★★
()

абсолютно ничего такого не наблюдаю. постоянно использую gdb. единственное, что он у меня собран без пистона, но это не влияет на его способность нормально показывать стек. собирай сорцы с флагом -ggdb, и всё будет нормально.

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

в генте пакетный менеджер на пистоне. а я выпиливаю пистон отовсюду. не хочу заморачиваться с выпиливанием пакетного менеджера :)

и, собственно, Void проще. его проще настроить на нестандартные настройки, можно легко убрать любые зависимости, которые не нужны. даже если формально они есть. чем проще, тем лучше. я одно время вообще на LFS жила на рабочей машине. какой-то пакетный менеджер всё равно нужен. но лучше, если он самый простой и минимальный.

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

Похоже, действительно в этом была проблема. Пересобрал musl с «-g», теперь gdb показывает, что нужно. Правда, после раскрутки стека он выдает «Backtrace stopped: frame did not save the PC». Видимо, в musl начальный кадр стека формируется не так, как в glibc.

eve
() автор топика

Но теперь придется держать зоопарк компиляторов для разных комбинаций: с/без musl, с отладочными символами и без.

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