Pull to refresh

Comments 14

первым параметром вам передастся указатель на инстанс
int _ZN9Testclass6getvarEv(int instance) {
int instance
int
указатель
Да, это очень хороший способ. Кстати если ядро поддерживает systemtap, то через него можно сделать тоже самое. Но иногда приходится и так извиваться:)
Кстати буквально вчера коллега выложил запатченный jemalloc, и послав SIGUSR2 процессу вы сможете увидеть статистику аллокациям к памяти (просто вывод malloc_stats). Просто включить его в LD_PRELOAD и просто послать SIGUSR2;)
Спасибо! Интересная штука, этот systemtap.
Вспоминается, как через libc с изменённой strcmp (или чем-то в этом роде) запускали закрытую бету Steam для Linux.
Пару лет назад ресерчил в эту сторону, написал даже либу которая все данные заворачивала в БД (и в память)

github.com/rowdyroad/farwel

Но так и не хватило времени ее довести до нормального состояния)

Есть либа https://github.com/sickill/stderred которая красит красным stderr, работает через LD_PRELOAD. Работает она неплохо, только почему-то вывод программы echo она не перехватывает, хотя с другими программами работает. Я специально вставлял вывод в лог в момент загрузки либы, и результат моих исследований — когда запускаешь echo «abcde» то LD_PRELOAD не срабатывает — по понятно, что раз не подгузило либу, то и перехват не сработает. А если запускаешь cat abcde — то срабатывает и либа подгружается.
Как такое может быть?
echo — не программа, а команда shell. Если вам нужна программа, используйте /bin/echo
Да, действительно. Частично помогло — теперь хоть по логам вижу, что либа загружается. А то что не красит stderr — это видимо там они, забыли перехватить что-то. По крайней мере, теперь работа этой штуки не выглядит как магия. Спасибо.
Sign up to leave a comment.

Articles

Change theme settings