在gdb中使用malloc_stat和malloc_info
涉及知识点:
malloc_statc输出的重定向
gdb中定义指针的值为$__开头的变量
gdb dsl编写的扩展
define my_malloc shell mkdir -p $arg0/log shell touch $arg0/log/malloc_info.log shell touch $arg0/log/malloc_stats.log set $__f = fopen("$arg0/log/malloc_info.log", "w") # 注意此处,用普通命令的变量不行的,例如$fp承接fopen的返回会报错“Left operand of assignment is not an lvalue.” call malloc_info(0, $__f) call fclose($__f) call close(2) # 由于malloc_stats默认就打印到进程的标准出错,所以把标准出错的描述符关了 call open("$arg0/log/malloc_stats.log",2) # 此处重新打开了一个文件,由于默认会用最小的描述符,所以就是标准出错的2 call malloc_stats() call close(2) end
使用方式:(ps,我将上述的代码放到了文件中,并且在gdbinit文件中source了一下,所以下面我就可以直接用了)
(gdb) my_malloc /home/lynalee