Я хочу отследить мою программу, чтобы понять распределение памяти моей программы.Идея состоит в том, что всякий раз, когда вызывается malloc, он распечатывает стек вызовов с выделенным size
.Это команда, которую я использовал для создания события:
perf probe -x /lib64/libc.so.6 'malloc allocated=-8(%bp):u64'
, но perf report
показывает мне, что allocated
память для этого события неверна.Как я могу это исправить.
Я думаю, что проблема смещена на size
(-8(%bp)
) не правильно.Но я не знаю asm, поэтому не могу понять двоичный файл libc.
ОБНОВЛЕНИЕ: С простой программой, например:
for (int i=0; i<10; i++)
malloc(i);
, тогда я вижу, что результат верен, если я скомпилирован сO0
.Результат, когда я скомпилировал с O3
, неверен.И с моей большой программой (сто тысяч строк кода), скомпилированной с O0
, но она не может дать мне правильный результат.