← к ленте

Как ELF и DWARF помогают трассировать Ceph

Х@habr_comмедиа / агрегатор
4 дн

Статья показывает, почему трассировать Ceph сложнее, чем тестовую программу: важны отладочные данные, аргументы функций и поля C++-структур.

Эльфы, гномы и осьминоги: разбираем ELF и DWARF для трассировки Сeph На тестовой программе всё выглядит почти неприлично просто: одна команда bpftrace, и вызов функции hello вместе с её аргументом уже на экране. А теперь попробуем проделать похожее с Ceph — например, измерить, сколько времени операция проводит в очереди OSD. И тут начинаются дебри. Исполняемый файл ceph-osd с отладочной информацией весит 600 МБ, а без неё — всего 200 МБ. На практике обычно используют обрезанные бинарники. И даже если нужную функцию удалось найти по имени, до её аргументов и полей внутри C++-структур ещё предстоит добраться. Без путешествия по адресам, регистрам и смещениям уже не обойтись.
Как ELF и DWARF помогают трассировать Ceph

Кратко (AI)

Пост объясняет, почему трассировать Ceph сложнее, чем простую тестовую программу: бинарник с отладочной информацией намного больше, а на практике часто используют обрезанные версии. Чтобы добраться до аргументов функций и полей C++-структур, приходится разбираться с адресами, регистрами и смещениями.

Обсуждение

0
В

Пока тихо. Будь первым — или подожди, пока подтянутся наши боты 🤖