LINUX.ORG.RU

получение трейса процесса


0

0

Существуют ли какие-либо патчи (ядерные) и софт (юзерспейсный) для получения трейса выполняющегося процесса - а именно требуется знать к каким адресам осуществлялся доступ и затем вывести (сопоставив адреса с символами) в наглядном виде желательно в динамике?

Буду благодарен за любые ссылки полностью или частично реализующие данную идею.

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

strace не то - он трейсит системные вызовы. gdb более-менее знаю - если не ошибаюсь там нет автоматизированного способа вывода адресов процесса к которым был доступ (только пошаговое а это в данном случае не годится) - если есть подкиньте ссылку.

kprobe и ooprofile не предлагать :-) -там нет того функционала

anonymous
()

Если интересует отладка кода в ядре, то systemtap это давно умеет (без наглядности в динамике ;). В юзерспейсе можно под отладчиком бэктрейсы смотреть, либо попробовать свежий systemtap, в который должны user-space probes добавить.

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

Нет - ядро не интересует. про systemtap в курсе - тоже не то. Возможно если oprofile подкрутить...надо будет глянуть подробнее на oprofile.

Есть ли ещё что в этом духе в ассортименте/арсенале?

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

Сказал же уже strace, ltrace не то. Я знаю что такое ptrace и кто его использует - нужно другое - готовое или полуготовое чтобы велосипед не изобретать.

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

dtrace разве под linux портирован?...

valgrind не годится сразу по нескольким причинам - во первых он эмулирует процессор (это плохо), + нужно отследить доступ ко ВСЕМ адресам, т.е. включая .text

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

> valgrind не годится сразу по нескольким причинам - во первых он эмулирует процессор (это плохо), + нужно отследить доступ ко ВСЕМ адресам, т.е. включая .text

Ээ, т.е. валгринд эмулирует процессор, но не использует данные в секции .text? Ты в своём уме?

Кажется, ты не представляешь обьёмы обращения к памяти процессом во время работы. Ты уверен, что ты хочешь именно этого? Если да, то подобная отладка будет тормозить выполнение на кучу порядков. И самый простой способ - это либо эмулировать процессор и перехватывать всё в эмуляторе, либо ковыряться с ядром. Если тебе не хочешь использовать ни один из вариантов - то тебе не повезло. Можешь ползти на кладбище.

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

DTrace не портирован и портирован не будет. Но если надо, то ведь не проблема поставить OpenSolaris, правда?

val-amart ★★★★★
()
Ответ на: комментарий от anonymous

> Ээ, т.е. валгринд эмулирует процессор, но не использует данные в секции .text? Ты в своём уме?

> Кажется, ты не представляешь обьёмы обращения к памяти процессом во время работы. Ты уверен, что ты хочешь именно этого? Если да, то подобная отладка будет тормозить выполнение на кучу порядков. И самый простой способ - это либо эмулировать процессор и перехватывать всё в эмуляторе, либо ковыряться с ядром. Если тебе не хочешь использовать ни один из вариантов - то тебе не повезло. Можешь ползти на кладбище.

1. Объёмы памяти представляю - то что будет тормозить неважно - эмулятор плохо так как медленнее чем на родной машине а и на ней будет тормозить - под эмулятором же будет полная ж...а.

2. Я сказал что не нужно трейсить ядро а не модифицировать. Скорее всего я склоняюсь к тому что ядро ПРИДЁТСЯ модифицировать - остальные способы не эффективны.

3. В секции .text код, а не данные. Как Вы с помощью valgrinda определите что в секции .text исполнялась ф-ция по адресу 0x08048080 а к остальной части .text доступа не было - а мне И ЭТО нужно знать.

anonymous
()
Ответ на: комментарий от mv

systemtap основан на kprobe, которые имеют ряд ограничений (по причине дизайна) - подробности см. как работает kprobe.

по этому не годится. ближе всего всё таки oprofile.

Но может ещё что есть?

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