Valpyk
Valpyk is a Valgrind log parser:
- Parse plain text Valgrind log
- Filter errors and memory leaks using Python functions
- Remove duplicates
- Display errors and top 10 memory leaks (sorted by size)
See also Valgrind homepage.
Download
Download last version of Valpyk: valpyk.py
You can also read source code online: valpyk.py
Why?
It's hard to read Valgrind raw logs. Valpyk cleanup data and give smart output: skip addresses, process identifier, etc. Example:
Valgrind log:
==14125== 61,320 bytes in 15 blocks are still reachable in loss record 35 of 35 ==14125== at 0x401C422: malloc (vg_replace_malloc.c:149) ==14125== by 0x48D3415: my_once_alloc (in /usr/lib/libmysqlclient.so.15.0.0) ==14125== by 0x48D37DD: (within /usr/lib/libmysqlclient.so.15.0.0) ==14125== by 0x48D40AF: (within /usr/lib/libmysqlclient.so.15.0.0) ==14125== by 0x48D44A1: get_charset_by_csname (in /usr/lib/libmysqlclient.so.15.0.0) ==14125== by 0x48F0993: mysql_real_connect (in /usr/lib/libmysqlclient.so.15.0.0) ==14125== by 0x4871A2C: mysql_conn_init (mysql.c:227) ==14125== by 0x4871091: get_mysql_handler (mysql.c:80) ==14125== by 0x4871176: mysql_close_open_user_sessions (mysql.c:102) ==14125== by 0x48718EF: init_module_from_conf (mysql.c:196) ==14125== by 0x805C707: load_modules_from (modules.c:315) ==14125== by 0x805CCCA: load_modules (modules.c:407)
Valpyk output:
Memory leak: 61320 bytes > malloc() at vg_replace_malloc.c:149 > my_once_alloc() > -unknow- > -unknow- > get_charset_by_csname() > mysql_real_connect() > mysql_conn_init() at mysql.c:227 > get_mysql_handler() at mysql.c:80 > mysql_close_open_user_sessions() at mysql.c:102 > init_module_from_conf() at mysql.c:196 > load_modules_from() at modules.c:315 > load_modules() at modules.c:407
