標籤:blog http io ar 使用 sp on 檔案 2014
curl 這個工具大家都很熟悉. 前幾天因為要跟蹤curl的實現細節, 不得不設法搭建curl的調試工程. 我們分別在windows visual studio 和 mac 上的 xcode 下搭建調試. 這裡記錄一些細節,分享出來.
curl 可以在數十個平台上編譯運行.
這是官網地址: http://curl.haxx.se
請在這裡下載源碼: http://curl.haxx.se/download.html
下載解壓.
一. Windows 調試:
在 windows 上調試比較簡單. 內建工程檔案.
直接用 VS2012 開啟 \projects\Windows\VC11 裡面的 工程檔案就可以了。
務必用vs2012 開啟。
直接 F10 就可以單步 到 main 函數。
二. Mac Xcode 調試.
我們主要說說 xcode 調試.
大概是因為 *nix 上的編譯比較方便, 所以都是使用 makefile 編譯. 所以沒有內建工程檔案.
所幸的是, 開源項目 cmake 可以根據 makefile 和設定檔逆向產生工程檔案. 而更好的訊息是 curl 早期是支援 cmake 的. 所以我們需要修改一下 curl 的設定檔, 並結合 cmake 來逆向產生 它在 xcode 上的工程檔案.
開工.
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-darwinsslmake
說明一下, 我們這裡指定了兩個參數, 我們不需要 curl 支援 ssh, 所以把”–without-libssh2 ” 排除. 而且”–with-darwinssl” 指定使用 mac 上的 ssl 實現, 而不需要 openssl.
這樣可以減少出錯的可能性, 而且, 我們就需要 darwinssl.
3) 產生 xcode 工程.
前面幾步都沒什麼特別的, 這一步是關鍵, 使用 cnamke 逆向產生工程.
在 curl 的源碼根目錄中, 有一個檔案 “CMakeLists.txt” 這個是逆向產生所必須的設定檔. 這是curl 官方提供的, 但是已經很舊了, 年久失修, 不能工作了.
我們可以先嘗試一下:
mkdir -p build/xcodecd build/xcodecmake ../../$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:
然後找到 main 函數. 就可以單步調試了:
歡迎訪問我的個人獨立部落格: http://byNeil.com
Windows 以及 Xcode下編譯調試 libcurl 源碼