valgrind + gdb

valgrind 結合 gdb,使 valgrind 偵測到 memory leak/invalid memory access 時自動通知 gdb

I. 故意寫錯程式

/* crash.c */
#include <stdlib.h>

int main()
{
    char *s = (char*)malloc(32);
    s[32] = 0;
    return 0;
}

II. 編譯

gcc -g -O0 crash.c

III. 執行

valgrind --vgdb=yes --vgdb-error=0 ./a.out

IV. gdb

alt+ctrl+t 開啟新 terminal,輸入:
gdb ./a.out
貼上上圖中的 "target remote | ...."
continue

上圖可以看到 gdb 停在出錯的那一列,這樣就可以很方便的 debug 了。