curl 這個工具你們都很熟悉. 前幾天由於要跟蹤curl的實現細節, 不得不設法搭建curl的調試工程. 咱們分別在windows visual studio 和 mac 上的 xcode 下搭建調試. 這裏記錄一些細節,分享出來.html
curl 能夠在數十個平臺上編譯運行.
這是官網地址: http://curl.haxx.sewindows
請在這裏下載源碼: http://curl.haxx.se/download.htmlxcode
下載解壓.ssh
一. Windows 調試:
在 windows 上調試比較簡單. 自帶工程文件.
直接用 VS2012 打開 \projects\Windows\VC11 裏面的 工程文件就能夠了。
務必用vs2012 打開。curl
直接 F10 就能夠單步 到 main 函數。函數
二. Mac Xcode 調試.
咱們主要說說 xcode 調試.
大概是由於 *nix 上的編譯比較方便, 因此都是使用 makefile 編譯. 因此沒有自帶工程文件.工具
所幸的是, 開源項目 cmake 能夠根據 makefile 和配置文件逆向生成工程文件. 而更好的消息是 curl 早期是支持 cmake 的. 因此咱們須要修改一下 curl 的配置文件, 並結合 cmake 來逆向生成 它在 xcode 上的工程文件.ui
開工.url
1) 須要先安裝cmake調試
下載 cmake 源碼, http://www.cmake.org/files/v3.1/cmake-3.1.0-rc1.tar.gz
而後解壓, 進去: ./configure && make && make install
一切順利的話,應該就能成功了。
2) 生成 makefile
第二步, 咱們須要生成curl 的 makefile. 進入curl的源碼目錄:
./configure --without-libssh2 --with-darwinssl make
說明一下, 咱們這裏指定了兩個參數, 咱們不須要 curl 支持 ssh, 因此把」–without-libssh2 」 排除. 並且」–with-darwinssl」 指定使用 mac 上的 ssl 實現, 而不須要 openssl.
這樣能夠減小出錯的可能性, 並且, 咱們就須要 darwinssl.
3) 生成 xcode 工程.
前面幾步都沒什麼特別的, 這一步是關鍵, 使用 cnamke 逆向生成工程.
在 curl 的源碼根目錄中, 有一個文件 「CMakeLists.txt」 這個是逆向生成所必須的配置文件. 這是curl 官方提供的, 可是已經很舊了, 年久失修, 不能工做了.
咱們能夠先嚐試一下:
mkdir -p build/xcode cd build/xcode cmake ../../$CURL -G Xcode
說明一下, 建立一個子目錄保存工程. 而後使用命令:
cmake ../../$CURL -G Xcode
來生成工程.
這一步會報大量的錯誤在」CMakeLists.txt」 中.
請使用附件中這個我修改過的版本代替源碼中的版本, 而後再重複執行上面的命令生成.
CMakeLists.txt
工程文件已經生成了.
可是此時打開工程編譯不過. 須要先對工程文件作一些修改:
具體請查看下面的命令.
sed -i "" "s/OTHER_LDFLAGS = \"/OTHER_LDFLAGS = \"-framework Cocoa -framework CoreFoundation -framework CoreServices -framework Security -fobjc-link-runtime -framework LDAP/" CURL.xcodeproj/project.pbxproj
在工程中添加了一些 link target. 比較簡單. 很少說了.
如今設置一下 調試工程, 就能夠調試了.
而後選中 curl 這個target:
歡迎訪問個人我的獨立博客: http://byNeil.com