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