在使用CocoaPod的Xcode工程中斷點沒有除錯資訊的問題跟進
通常客戶端產品至少都會有Debug和Release兩種編譯配置,在編譯Release版本中會進行一些優化,以減少最終產品的體積。
比如,在Release版本中會對程式碼執行步驟進行優化(如O1、O2等),這會導致有些程式碼被優化省略掉,有時無法單步除錯;另外就是會去掉符號資訊,這會導致斷點除錯時沒有符號資訊,所以才會有CallStack的捕獲和解析內容。
由於千牛iOS端會有不同版本,分別面向內部開發者、外部ISV以及終端使用者。尤其是在整合QAP專案後需要提供一個專門的開發除錯版本給QAP開發者,所以新增了一個QAPDistribution Scheme,並且這個Scheme是從Debug Scheme複製過來的,所以按道理是可以進行除錯、檢視符號資訊的。結果在使用這個Scheme進行開發除錯的過程中發現符號資訊缺失,控制檯輸出如下資訊:
AppName was compiled with optimization - stepping may behave oddly; variables may not be available.
這就給我們排查問題帶來不便。雖然可以切換成Debug來除錯排查,但由於給ISV的版本不是Debug的,所以環境不一致,可能會導致一些遺漏。於是我再次確認了下編譯配置資訊:
確實和Debug是一致的,這就帶來了困惑。
後來進一步發現在千牛自身程式碼中是有符號資訊的,但是跟進到Pod依賴中就缺失了,所以懷疑是不是Pod工程的編譯配置有問題:
發現果然Pods工程的編譯配置是有對QAPDistribution Scheme進行優化的。那麼問題來了,如果我手動修改一下,之後再進行pod update
是不是又會復原?驗證了下果然如此,所以只能通過Pod本身的配置來解決問。在網上搜了下,有如下解決方案:
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
if config.name.include?("QapDistribution")
config.build_settings[`GCC_OPTIMIZATION_LEVEL`] = `0`
end
end
end
經驗證有效。
相關文章
- Xcode斷點除錯出現的問題XCode斷點除錯
- [譯] Xcode 中的使用者斷點XCode斷點
- VS - 打斷點/本地除錯/遠端除錯 問題斷點除錯
- 在 Python 除錯過程中設定不中斷的斷點Python除錯斷點
- Unity匯出到Xcode沒有Run Destination的問題UnityXCode
- vscode除錯使用斷點VSCode除錯斷點
- Pycharm的斷點除錯PyCharm斷點除錯
- 有沒有大佬知道為啥 VScode 加了斷點之後,F5 在斷點處直接跳過的問題呢VSCode斷點
- 新版的Chrome斷點有問題Chrome斷點
- Xcode中使用LLDB除錯XCodeLLDB除錯
- Swift 首次除錯斷點慢的問題解法 | 優酷 Swift 實踐Swift除錯斷點
- AS斷點除錯斷點除錯
- 【前端除錯】- 斷點除錯的正確開啟方式前端除錯斷點
- webstorm 斷點除錯WebORM斷點除錯
- Vscode斷點除錯VSCode斷點除錯
- 使用ErrorStack進行錯誤跟蹤及診斷Error
- Xcode 除錯技巧XCode除錯
- 關於Xcode10中libstdc報錯問題的解決XCode
- Xcode 刪除沒用的描述檔案XCode
- phpstorm + xdebug 斷點除錯PHPORM斷點除錯
- 除錯——條件斷點除錯斷點
- appium 自動化中關於斷言問題,有沒有更好的斷言方法,求大神賜教!APP
- 使用訊號量Semaphore實現沒有飢餓問題的鎖
- No debuggable processes(Android Studio沒有可除錯應用)問題解決方案Android除錯
- 記一次使用 Windows 除錯套件 gflags 解決 CefSharp 載入報錯資訊模糊的問題Windows除錯套件
- 去掉pipeline中shell命令的除錯資訊除錯
- Windows PHPstorm xdebug 斷點除錯WindowsPHPORM斷點除錯
- 斷點除錯 debug模式 1006斷點除錯模式
- 【IDEA】2020 斷點(BreakPoints)除錯Idea斷點除錯
- 斷點除錯之壓縮引發的血案斷點除錯
- 在K8S中,如果容器沒有bash命令,如何進⼊容器排查問題?K8S
- 移動端報告沒有進入二開的移動單據,且待辦列表外掛VTR_WFTodoList無法除錯進入斷點除錯斷點
- Xcode除錯技巧之:LLDBXCode除錯LLDB
- Xcode動態除錯原理XCode除錯
- Xcode Debug除錯彙總XCode除錯
- 使用 SOS 對 Linux 中執行的 .NET Core 進行問題診斷Linux
- Vue 中利用 eventBus 進行資料通訊的問題Vue
- VS code中斷點除錯Vue CLI 3專案斷點除錯Vue
- 如何斷點除錯Tomcat原始碼斷點除錯Tomcat原始碼