2021-05-01,9點51
自己寫測試debug redis代碼:
錯誤:
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
好像是必須寫一個main函數才能編譯.
哇成功了!~
舉一個例子:
我要調試zipmap.c代碼
1.找到他所有的依賴.這個文件比較好, 只依賴zmalloc.c
2.看他的代碼.發現最后有一行為了方便我們用已經寫好的.
#ifdef ZIPMAP_TEST_MAIN
下面就是main函數了.記住gcc一定要有main函數才能編譯成功.
所以我們再這樣上面加上這個定義即可.打開下面的函數.
寫上這個#define ZIPMAP_TEST_MAIN 啟動測試.
3. cd 進入src目錄 然后gcc zmalloc.c zipmap.c -g直接陳宮
4. ./a.out 直接看到結果
5.配置 .vscode/launch.json 里面: "program": "${workspaceFolder}/src/a.out",
6.斷點打到zipmap.c里面main函數里面第一行.
7.運行debug即可.直接進來了!!!!!!!這回可以精細的玩redis了.
