Комментарии 14
первым параметром вам передастся указатель на инстанс
int _ZN9Testclass6getvarEv(int instance) {
int instance
int
указатель
В последнем примере instance же должен быть type_t, а не инт?
Да, это очень хороший способ. Кстати если ядро поддерживает systemtap, то через него можно сделать тоже самое. Но иногда приходится и так извиваться:)
Кстати буквально вчера коллега выложил запатченный jemalloc, и послав SIGUSR2 процессу вы сможете увидеть статистику аллокациям к памяти (просто вывод malloc_stats). Просто включить его в LD_PRELOAD и просто послать SIGUSR2;)
Кстати буквально вчера коллега выложил запатченный jemalloc, и послав SIGUSR2 процессу вы сможете увидеть статистику аллокациям к памяти (просто вывод malloc_stats). Просто включить его в LD_PRELOAD и просто послать SIGUSR2;)
printf(«Blocking mimeinfo.cache read\n»);Чепятать всё же лучше в stderr в подобном случае, а не в stdout.
Вспоминается, как через libc с изменённой strcmp (или чем-то в этом роде) запускали закрытую бету Steam для Linux.
А нет, сам Steam запускали через steam://open/games, а вот через strstr дурили движок Source, чтобы он считал, что поддерживается расширение GL_EXT_texture_sRGB_decode.
steamcommunity.com/app/221410/discussions/0/846938351012409765/
steamcommunity.com/app/221410/discussions/0/846938351012409765/
Пару лет назад ресерчил в эту сторону, написал даже либу которая все данные заворачивала в БД (и в память)
github.com/rowdyroad/farwel
Но так и не хватило времени ее довести до нормального состояния)
github.com/rowdyroad/farwel
Но так и не хватило времени ее довести до нормального состояния)
Есть либа https://github.com/sickill/stderred которая красит красным stderr, работает через LD_PRELOAD. Работает она неплохо, только почему-то вывод программы echo она не перехватывает, хотя с другими программами работает. Я специально вставлял вывод в лог в момент загрузки либы, и результат моих исследований — когда запускаешь echo «abcde» то LD_PRELOAD не срабатывает — по понятно, что раз не подгузило либу, то и перехват не сработает. А если запускаешь cat abcde — то срабатывает и либа подгружается.
Как такое может быть?
Как такое может быть?
echo — не программа, а команда shell. Если вам нужна программа, используйте
/bin/echo
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Практическое применение LD_PRELOAD или замещение функций в Linux