clion怎么調試postgresql呢?
clion使用cmake去編譯項目的,但是大家編譯postgresql用的是make。雖然項目中也有CMakeLists.txt文件,但是cmake會報錯,因此我們要修改使用cmake調用make去做編譯,就好像在java中用maven調用ant編譯一樣。
安裝步驟
- 把源碼從git上clone下來
- 安裝依賴庫:readline、bison和flex等
- 運行
sh configure --prefix=$HOME/project --enable-depend --enable-cassert --enable-debug
把其中的$HOME/project
改成你想安裝postgresql的目錄
- 運行make
- 運行make install
- 使用initdb初始化數據庫,指定數據目錄
- 使用Clion導入postgresql源碼
- 修改CMakeLists.txt,內容如下(如果沒有,可以直接創建,並將下放內容復制進去)
cmake_minimum_required(VERSION 3.6) project(postgres) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") add_custom_target(postgres COMMAND make -C ${postgres_SOURCE_DIR})
- 打開debug configuration,增加一個Application,Target選postgres,Executable選擇到源碼目錄的
src/backend/postgres
,程序參數寫 -D 數據目錄
然后就可以愉快的調試代碼了,主函數在src/backend/main/main.c
調試過程中,發現斷點亂跳,而且在Eclipse/CDT中查看部分變量的值的時候,出現optimized字樣。懷疑是編譯過程中的優化導致的,為此需要關閉gcc優化選項。
在https://wiki.postgresql.org/wiki/Developer_FAQ文章中也提到關閉優化開關,實踐下來,configure的參數如下:
./configure --prefix=%your project path% --enable-depend --enable-cassert --enable-debug CFLAGS="-ggdb -O0"
目前看來貌似解決了斷點亂跳的問題