在windows下使用vs2013編譯和調試mysql源代碼


1. 准備工作

1OSwin10 + VS2013

2mysql 源碼(windows版):mysql-5.6.25.zip 

3perl toolActivePerl-5.16.3.1604-MSWin32-x64-298023.msi

4Cmakecmake-3.5.0-win32-x86 .exe

5Bisonbison-2.4.1-setup.exe

     軟件列表:

     

安裝需要注意的幾點,一般安裝在根目錄下,如C:\Cmake C:\GnuWin32 C:\Perl64 ,當然也可以是其他目錄,一般路徑不要出現中文字符,空格及特殊字符。

     Perl, Cmake, Bison安裝完事之后,將他們安裝目錄下的bin所在路徑加入環境變量中(windows環境變量添加),如C:\Cmake\bin

     

     保險起見我們需要驗證一下安裝是否成功:

    

 

2. 開始安裝

在任意你喜歡的盤里面創建一個用於安裝的目錄:如在D盤創建mysql然后將mysql-5.6.25.zip 解壓到該目錄下,然后在cmd中切換到安裝目錄,此處即為D:\mysql\mysql-5.6.25,記({install}=D:\mysql\mysql-5.6.25,其下包含如下文件目錄:

     

然后在{install}下執行以下命令:

>mkdir bld
>cd bld
>cmake ..

 這樣你可看到類似如下的輸出:

     有一些錯誤,目前也沒有解決,但其實這並不影響我們生成VSMySQL.sln 工程文件。事實上只要看到下面這個就可以了,各種not found也不要緊。如果采用Cmake 圖形界面,其實也差不多了。這里不再贅述。

     下一步我們就可以在VS2013build solution了(對應生成解決方案),但為了盡可能減少警告或錯誤,我們首先需要對下述文件進行修改:

            源碼目錄\strings\ctype-czech.c

源碼目錄\strings\ctype-latin1.c

源碼目錄\strings\decimal.c

源碼目錄\mysys\thr_mutex.c

源碼目錄\storage\innobase\include\ut0mem.h

源碼目錄\sql\sql_locale.cc

修改的方法很簡單,就是將這些文件以UTF-8(帶BOM頭的)格式保存。一般使用Nodepad++工具等。

最后一步就是找到{install}\mysql-5.6.25\sql\mysqld.cc中的test_lc_time_sz()函數,將其中的DBUG_ASSERT(0)改為DBUG_ASSERT(1)即可。

至此我們就完成了將源碼轉換成VS中工程文件的目的。之后我們就可以build solution了。如果沒有錯誤說明就已經沒有問題了,一些小的警告可能是因為C++編譯器比C編譯器嚴格的緣故。下一步我們開始調試。

3. 調試

然后將mysqld工程的Debug:屬性->調試->命令參數,設為--console  --defaults-extra-file=C:\Windows\my.ini如下:

      

然后啟動實例

      

可以打斷點,進入程序跟蹤調試。

      

也可以在程序生成的目錄下,在命令行狀態下運行,進入調試生成目錄:

mysqld --debug  --standalone

     

運行調試客戶端

      

4.注意事項

     1.mysql默認查找配置文件的路徑:程序首先會分別收集windows系統目錄、C:\根目錄、執行碼所在的父目錄,如果配置了環境變量MYSQL_HOME,這個目錄也會被搜集,然后在這些目錄下進行查找my.ini文件

     c盤的根目錄下放了一個默認的windows下的my.ini文件

    

     基目錄為e:\mysql,數據目錄為e:\mysql\data

     

 

   2.mysql的基目錄和數據目錄,數據目錄要有mysql基本的系統數據庫文件

     

參考資料:

1.Win7+VS2010mysql源碼編譯與調試 

     http://www.2cto.com/database/201407/316681.html

2.Windows+VS2012環境下編譯調試MySQL源碼

     http://www.voidcn.com/blog/a809146548/article/p-4851777.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM