[Linux] 手動編譯 curl 7.19.7 的 debug 版本
前一陣子遇到了 curl 7.19.7 陷入無窮迴圈的問題,
原本以為找到問題就 OK 了,但最近被要求要找出重現問題的方法,
好方便驗證這是個問題,產品才願意去改…
幸好編譯 curl 比我想像中的要簡單,中間沒有遇到什麼問題,算是不幸中的大幸 😛
1. 取得 curl 7.19.7 的原始碼
這個隨便 Google 一下 “curl 7.19.7 source code” 就可以找到了,
像我找到的是 https://github.com/csexton/curl-7.19.7/archive/master.zip
2. 設定並編譯 curl
這邊可以參考一下 curl doc: how to install curl,
先解開下載下來的 zip 檔,執行一行 ./configure –help 看看,
發現下面的選項對我接下來的工作是比較有幫助的:
--prefix=PREFIX install architecture-independent files in PREFIX --enable-debug Enable debug build options --disable-optimize Disable compiler optimizations
–prefix 可以讓我決定 curl 要裝到哪去,
–enable-debug 和 –disable-optimize 可以讓我編譯出有 debug symbol 的版本,
同時不要有最佳化 (debug 最佳化的 code 會一直亂跳到自己瘋掉 =_=)~
下面是我下的 configure 指令:
./configure --prefix=/home/build/curl_7.19.7 --enable-debug --disable-optimize
接下來就簡單了,執行 make && make install 就行了~
沒問題的話,curl 的執行檔就會放在 –prefix 指定的目錄下的 bin 目錄,
在本例中是 /home/build/curl_7.19.7/bin:
make && make install
3. 用 gdb 執行 curl
因為要重現 curl hang 住的問題,因此用 gdb 執行剛編譯好的 curl,
看看要怎樣的條件下,才會進到之前預想的狀況~
試著單步執行一下,行數和程式碼都可以正確的顯示,也不會亂跳,
編譯 debug 版本的 curl 算是成功囉~
之後真的作完 debug 的工作再來寫一篇吧~~^^