Как модифицировать регистр sp в valgrind?

Я хочу отследить модификацию регистра стека x86_64 (sp), написав простой инструмент valgrind. Существует ли какой-либо другой инструмент, который отслеживает изменения sp (или другие изменения в реестре), куда я мог бы посмотреть и скопировать? Я думаю, что мне нужно разобрать IRStmt помеченный Ist_Put и искать Put.offset == offset_SP, Есть ли инструменты, которые уже делают это? Я хочу распечатать значения, которые записаны в SP.

1 ответ

Решение

Смотрите pub_tool_tooliface.h. Это определяет набор функций void VG_(track_new_mem_stack*) и VG_(track_die_mem_stack*) для отслеживания изменений в SP.

Если вам не нужно очень высокопроизводительное отслеживание (например, необходимое для memcheck), оно должно быть достаточно хорошим для использования:

  • VG_ (track_new_mem_stack)
  • VG_ (track_new_mem_stack_signal)
  • VG_ (track_die_mem_stack)
  • VG_ (track_die_mem_stack_signal)
Другие вопросы по тегам