2017年1月25日 星期三

Linux 筆記: 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,輸入:
  1. gdb ./a.out
  2. 貼上上圖中的 "target remote | ...."
  3. continue

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

沒有留言:

張貼留言