MySQL原始碼構建和在Gdb中除錯的配置過程

2021-05-28 17:52:32 字數 1374 閱讀 6032

通過原始碼學習c++是我一直以來的習慣,上個月把sgi』s stl原始碼搗鼓了一下,畢竟是在win下,配置過程還是很順利的,這個可以參考侯傑的stl原始碼,一有空我就深入stl,那個才是基礎啊。

環境:rhel 5 64-bit 乙個快被我用爛了的linux,但是一直沒重灌過,因為一直保留有快照,萬一不行了還原下,呵呵。

網上有用bitkeeper下mysql原始碼,估計是類似是cvs svn的版本控制,下了沒用還只能找到2.0版本的,訪問了他提供的位址,連原始碼都找不到,是不是被撤了也不知道,反正網上能下到原始碼,幹嗎還用版本控制。

這個**能下到原始碼,有4.1.18還有5.0.18的,我下了前者。

前期準備,gcc,autoconf,automake,m4,make等各種工具,我的rhel 5都裝好了。

$ tar zxvf mysql-4.1.18.tar.gz

$ cd mysql-4.1.18

$ cp build/compile-pentium-debug build/compile-generic-debug

$ vim build/compile-generic-debug

將檔案設定如下:

#! /bin/sh

path=`dirname $0`

. "$path/setup.sh"

extra_flags="-g  $debug_cflags"

c_warnings="$c_warnings $debug_extra_warnings"

cxx_warnings="$cxx_warnings $debug_extra_warnings"

extra_configs=""

. "$path/finish.sh"

$ build/compile- generic-debug   生成make檔案

$make test

如下這步可選,如果你要將mysql安裝到系統目錄,那麼可以執行

$make install

當然還可以用 $./configure 配置選項

接下來就是最重要的除錯了

$cd到mysql-test目錄下

$cd t

在t目錄下你會發現有很多.test檔案,檔案內容全是sql語句,是預存在mysql下提供給我們測試的,當然也可以自己新建乙個.test檔案,裡面寫上自己要測試的**。

測試:

$./mysql-test-run –gdb 測試檔名稱(注意不帶test)

比如測試drop.test檔案,那麼命令列便是

$./mysql-test-run –gdb drop

執行後會跳出gdb除錯視窗,會跳到mysql_parse()函式中的乙個預設斷點中。

除錯完成後,控制台會提示測試結果。

c gdb 繫結原始碼 GDB列出原始碼

在使用 gdb 除錯程式時,我們會經常需要展示程式中的 但是列印出的 可能和原始檔中的不同,為什麼這麼說呢?我們在 gdb準備除錯階段 章節中講到過 gcc 編譯器允許 g和 o選項同時使用,也就是說 gdb 可以除錯優化後的程式。優化的程式中會在原始檔中的某些地方改變,所以和編寫的檔案和程式執行的...

Doxygen Graphviz構建原始碼組態檔

當檢視專案的源 時,乙個好的查詢文件能夠幫助提高 閱讀和理解的速度。使用doxygen和grapviz生成專案源 組態檔,包括類之間的繼承關係,函式之間的相互呼叫關係等。doxygen根據 注釋生成文件,說明類之間的繼承關係和函式呼叫關係 grapghviz進行圖形展示。doxygen配置介面 1....

Harbor 1 9 x 版本從原始碼構建和執行

本指南為開發人員提供了從源 構建和執行harbor的說明。harbor被部署為多個docker容器,並且大多數 都是用go語言編寫的。構建環境需要docker,docker compose和golang開發環境。請安裝以下先決條件 軟體所需版本 docker 17.05 docker compose...