Perf зонд события для назначения переменной C - PullRequest
1 голос
/ 15 марта 2019

Я использовал perf probe с malloc, но, похоже, не могу найти подходящее событие perf для случая, когда происходит присвоение переменной.Есть ли такое событие?

В идеале, когда происходит что-то вроде int var = 17;, происходит какое-то соответствующее событие, которое я пропускаю?Вне экземпляра переменной, но фактического присвоения значения и при каждом последующем изменении.

1 Ответ

2 голосов
/ 15 марта 2019

Да, это возможно с событиями аппаратной точки останова. perf record поддерживает это, если вы знаете адрес:

событие аппаратной точки останова в виде \ mem: addr [/ len] [: access] где адрес - это адрес в памяти, который вы хотите взломать. Доступ тип доступа к памяти (читай, написать, выполнить) это может быть передано следующим образом: \ mem: addr [: [r] [w] [x]]. len это диапазон, количество байтов от указанный адрес, который будет охватывать точку останова. Если хотите доступ для чтения и записи профиля в 0x1000, просто установите mem: 0x1000: rw. Если вы хотите профилировать доступ для записи в [0x1000 ~ 1008), просто установите mem: 0x1000 / 8: w.

Может быть трудно получить адрес памяти заранее. Вы также можете использовать perf_event_open внутри своей программы, но тогда вам нужно проанализировать записи образцов семплов в вашей программе.

...