windows下源碼安裝調試postgresql

來源:互聯網
上載者:User

標籤:路徑   vs2015   附加   UI   下載連結   unicode   執行命令   san   編譯過程   

環境:windows 10

postgresql版本:postgresql-9.6.5

使用工具:vs2017社區版

協助工具輔助:perl、diff、flex、bison

相關工具:

perl下載連結:http://pan.baidu.com/s/1i5aPilB密碼:k6f0

diff、flex、bison下載連結:http://pan.baidu.com/s/1hrHotes密碼:4ku6

以上工具均為綠色版,解壓後,設定環境變數即可

此處使用的編譯調試工具為vs2017社區版,該版本為免費版,個人使用不存在著作權困擾。

首先離線下載vs2017社區版,也可線上安裝,安裝方式如下:

微軟官方下載官方提供的下載工具:vs_community.exe 

cmd中執行以下命令,zh-CN表示中文,en-US表示英文,E:\vs2017表示下載位置:

vs_community.exe--layout E:\vs2017 offline --lang zh-CN

安裝vs2017,選擇如下內容安裝即可:

修改postgresql設定檔,否則編譯過程會出現錯誤。修改內容如下:

E:\PG\postgresql_9.6.5\src\tools\msvc\VSObjectFactory.pm中,將“if ($major > 14)”修改為“if ($major > 15)”,如下所示:

E:\PG\postgresql_9.6.5\src\tools\msvc\Mkvcbuild.pm將“my $vsVersion = DetermineVisualStudioVersion();”修改為“my $vsVersion = ‘14.00‘;”,如所示:

以上兩步解決pg的perl指令碼中不識別vs2017版本的問題,報錯資訊為“Unable to determine VisualStudio version: The nmake version could not be determined. atsrc/tools/msvc/Mkvcbuild.pm line 86.”

用vs開啟檔案“E:\PG\postgresql_9.6.5\src\fe_utils\print.c”,執行如下操作:

然後儲存替換原來的檔案。此處解決的問題:該檔案中的分行符號使用的是各個作業系統通用的分行符號,在windows下編譯會出現警告。報錯資訊為“warning C4819: The filecontains a character that cannot be represented in the current code page (936).Save the file in Unicode format to prevent data loss”

下面編譯postgresql源碼:

然後執行“cd /d E:\PG\postgresql_9.6.5\src\tools\msvc”切換到pg源碼路徑,執行命令“perl build.pl DEBUG”此處為方便調試使用DEBUG模式,編譯時間會比在linux下要長,編譯完成後,如下:

編譯完成後,可以執行“perl vcregress.pl check”跑一下迴歸測試,結果如下:

確認無誤後,執行“perl install.pl E:\pg\pgdb”進行安裝,安裝結果如下:

然後進入到pg安裝目錄“cd /d E:\pg\pgdb”進行建庫操作“initdb.exe -D ../data”,建庫完成後,啟動pg資料庫“pg_ctl.exe -D ../data -llogfile start”,啟動完成後即可進入資料庫“psql -d postgres”

如果需要使用vs調試pg,先將pg代碼使用vs開啟,開啟檔案,找到編譯後的檔案夾“E:\PG\postgresql_9.6.5”,開啟檔案“pgsql.sln”即出現以下提示,因使用vs2015的編譯器編譯,不對項目進行重新導向,選項如下:

確定後,即可使用vs開啟pg源碼。然後確定當前開啟pg的進程ID:

點擊附加,即可附加到進程。

嘗試調試

此時pg在等待輸入,通過堆棧資訊可以看出是等待網路訊息的狀態,最終停止在函數“WaitForMultipleObjects”

使用斷點調試,例如在pg錯誤入口函數下斷點,

如下

然後執行錯誤的SQL語句:

資料庫中並不存在表aaaa,此時vs狀態如下:

以上堆棧資訊即為pg執行錯誤SQL時所使用的函數。

windows下源碼安裝調試postgresql

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.