valgring つかってみた¶
なにこれ¶
- メモリリーク、二重解放、不正メモリアクセスの検出
- マルチスレッドに関連した問題の検出
- 実効時間や呼び出し回数の集計などボトルネックをしらべたり
使用方法¶
$ gcc -g main.c
$ cat main.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* p = (char*)malloc(sizeof(char)*5);
p[6] = 'a';
free(p);
}
$ valgring ./a.out
メモ¶
- デバッグオプションとかをつけた方がいいかも
Helgrind¶
$ cat main.cc
#include <thread>
#include <pthread.h>
int var = 0;
void child_fn () { var++; }
int main ( void ) {
std::thread t(child_fn);
var++;
t.join();
return 0;
}
$ g++ -std=c++11 -g -O0 main.cc -lpthread
$ valgrind --tool=helgrind ./a.out