Postgresql
Postgresql - 分段錯誤(核心轉儲)
我正在研究 postgresql 程式碼(伺服器端)。我按照官方教程從原始碼安裝了一個版本: http ://www.postgresql.org/docs/8.4/interactive/install-short.html
我對程式碼做了同樣的修改,所以我需要再次安裝 postgresql,但這次是我的版本。
我在*/usr/local/pgsql2/中重命名了**/usr/local/pgsql* /並且我做到了:
make distclean ./configure make sudo make install sudo mkdir /usr/local/pgsql/data sudo chown darkcoffeelinux /usr/local/pgsql/data
直到現在一切都很順利,但是有了命令
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/
我收到了這個錯誤:
The files belonging to this database system will be owned by user "darkcoffeelinux". This user must also own the server process. The database cluster will be initialized with locale en_US.UTF-8. The default database encoding has accordingly been set to UTF8. The default text search configuration will be set to "english". fixing permissions on existing directory /usr/local/pgsql/data ... ok creating subdirectories ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 24MB creating configuration files ... ok creating template1 database in /usr/local/pgsql/data/base/1 ... ok initializing pg_authid ... Segmentation fault (core dumped) child process exited with exit code 139 initdb: removing contents of data directory "/usr/local/pgsql/data"
附加資訊:我使用的是 kubuntu,postgresql 8.4.15
我認為權限是正確的,否則您將不會到達這裡。
我的猜測是您所做的修改導致了問題。鑑於這是一個分段錯誤,情況尤其如此。您真正需要做的是查看轉儲核心時的呼叫堆棧,看看您是否可以隔離程式碼中發生這種情況的位置,然後回溯以查看您所做的修改可能導致了這種情況。鑑於您已經修改了程式碼,第一步是檢查您是否可以像 kgrittn 所說的那樣重現,但我敢打賭,這只會出現在您修改後的程式碼中。
下一步可能是在調試器中執行 initdb 並查看崩潰時的情況。在這一點上,標準的 C 調試實踐確實是您最好的選擇。