Linux下除錯PostgreSQL資料庫

2021-07-04 23:55:54 字數 1760 閱讀 9544

準備原始碼包為:postgresql-9.4.1.tar.gz

作業系統:ubuntu 14.04 x64 server

解壓原始碼包:

#tar zxvf postgresql-9.4.1.tar.gz

#cd postgresql-9.4.1/

#./configure --enable-debug --without-readline --without-zlib

#make -j4

#make install

這裡在執行configure的時候,需要增加debug選項,這樣生成的makefile檔案才會有-g除錯選項,另外,生成makefile檔案之後還需要修改一下./src目錄下的makefile.global檔案,將其中的-o2選項去掉,由於-o2選項編譯優化可能會打亂**秩序,對於源**流程查閱可能有影響。

上面第一步已經完成了資料庫的安裝,接下來是使用資料庫,那麼如何使用。處於安全性考慮postgresql是不會讓你用root使用者操作的,所以這裡需要增加乙個資料庫專用使用者。

#adduser postgre

#chown -r postgre:postgre /usr/local/pgsql/

接下來切換使用者,然後初始化postgresql的資料檔案:

#su postgre

$cd ~

$mkdir data

$/usr/local/pgsql/bin/initdb data/ //初始化資料庫檔案

$/usr/local/pgsql/bin/pg_ctl -d data/ -l logfile start //啟動資料庫服務

$/usr/local/pgsql/bin/psql template1 //進入資料庫服務

到這一步就可以進入postgresql資料庫伺服器了,可以執行語句,具體如下所示:

psql (9.4.1)

type "help"

for help.

template1=# select pg_backend_pid();

pg_backend_pid

----------------

31073

(1 row)

這裡通過select pg_backend_pid()函式呼叫來獲取postgressql例項的程序號。接下來就是gdb神奇的功能了,gdb可以通過程序號除錯正在執行的程序,當然,此舉必須在root使用者下執行。新開乙個ssh視窗,切換到root使用者,輸入:

#gdb /usr/local/pgsql/bin/postgres 31073
這樣就啟動了gdb偵錯程式,於是就可以除錯postgres程式了,如下圖所示:

當我們在gdb中輸入s(step)時,會發現此時程式阻塞了,這時候是在等待使用者的資料,我們切換到postgre使用者視窗,在template1=#中輸入sql語句。

psql (9.4.1)

type "help"

for help.

template1=# select * from test1;

切換到root視窗,可以發現gdb除錯程式不再阻塞,如下圖所示:

在除錯頁面可以看到我們剛剛輸入的字串,說明程式能夠正常除錯。

Linux下除錯總結

感覺linux環境下段錯誤的產生原因及除錯方法小結寫的不錯,列舉了幾個主要的除錯方式。有幾點補充 1.在使用core dump的時候,關於開啟 關閉生成core檔案的命令 ulimit c unlimited 使core檔案大小沒有限制。ulimit c 0 限制core檔案大小為0,即不產生cor...

linux下除錯python程式

之前除錯python程式都是用print引數,感覺有點弱爆啊,最近發現python也有類似c語言gdb的工具pdb,記錄下pdb的使用方法和心得。先找了段簡單的測試程式 usr bin python from ftplib import ftpimport sysimport socket impo...

linux下除錯程式

摘要 在linux下,我們也應該掌握常見的程式除錯指令,這樣才能方便我們在linux下進行工作。在windows下雖然除錯程式比較方便,但是linux有比它更加吸引人的地方在於它可以很輕鬆的就進入乙個程式的內部。這對於我們後期的 分析有很大的好處,所以,今天我就把這幾天學到的關於除錯程式的命令列總計...