簡體   English   中英

如何在Xcode中的框架中進行調試?

[英]How can I debug in a framework in Xcode?

我有兩個項目,一個是networkLib進行登錄和其他一些網絡功能,另一種是usingLibDemo 所以我有兩個項目的所有源代碼。

networkLib項目成果框架,叫做myNetKit.framework ,這是使用usingLibDemo

在此輸入圖像描述

現在我成功使用myNetKit.framework登錄,但有時崩潰,可能在main()沒有堆棧信息,但有時Xcode給我堆棧信息如下:

在此輸入圖像描述

所以我知道崩潰的地方:

在此輸入圖像描述

但是Utils.m沒有暴露, Xcode如何獲取堆棧信息和崩潰線,並最終為我打開源文件? 因為我的磁盤中有源代碼?

如果是這樣,我怎樣才能逐步調試myNetKit.framework ,當它沒有崩潰時?

非常感謝任何提示。

如果有人將來會有相同的問題(現在我正在使用Xcode 8):

您可以:

  1. 構建您的框架項目(在此示例中為“networkLib”)
  2. 將項目輸出(“myNetKit.framework”)復制到目標項目(“usingLibDemo”)
  3. 在您的設備上運行目標項目(“usingLibDemo”)
  4. 停止過程
  5. 手動從您的設備啟動應用程序(“usingLibDemo”)
  6. 打開框架項目和附加到應用程序的進程(在步驟5中啟動)。 在Xcode 8中:Debug-> Attach to Process->選擇應用程序的名稱。

不要忘記在框架項目中設置一些斷點。

當庫使用所有符號構建時,它包含嵌入其自身的每個源文件的完整路徑。 如果用十六進制查看器打開.a,實際上可以看到這個。 有了這個,XCode將知道如何獲取源文件。

設置斷點更具挑戰性。 您基本上必須通過單步執行這些文件中的方法,使XCode從庫中慢慢發現源文件。 一旦XCode打開了文件,您就可以在其中的任何位置設置斷點。

這有點痛苦,但它可以工作,如果你不想,你不必將庫項目作為一個子項目。

您還可以將整個庫( networkLib )項目添加到項目中,並通過在項目設置中添加依賴項來動態鏈接庫。 因此,您可以擁有項目中的所有源代碼。 所以你可以在運行時調試它。

處理多個框架項目時,請使用XCode Workspace。 當您使用工作空間時,斷點將起作用,您可以在沒有來回調試的情況下找到崩潰。 從長遠來看,管理框架要容易得多。

以下工作考慮了您單獨擁有框架項目並將a.framework添加到某個項目B場景

  1. 轉到項目B,在任何地方添加斷點。
  2. 轉到斷點視圖(可以將所有斷點視為列表),右鍵單擊斷點並單擊將斷點移動到用戶。
  3. 轉到a.framework並重復步驟1和2,但是對於您的框架項目。
  4. 現在切換回項目B並在模擬器/設備上運行項目。

您現在將看到程序在框架中設置的斷點處停止。

您應該調試單獨輸出框架的項目networkLib。 該框架沒有類似app的結構,因此無法調試其他項目中的框架文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM