我怎样才能在Xcode框架debugging?
我有两个项目,一个是networkLib
login和一些其他的networkingfunction,另一个是usingLibDemo
。 所以我有这两个项目的所有源代码。
myNetKit.framework
项目输出一个名为myNetKit.framework
的框架,该框架由使用usingLibDemo
。
现在我成功地使用myNetKit.framework
来login,但有时它崩溃,也许在main()没有堆栈信息,但有时Xcode给了我像下面的堆栈信息:
所以我知道它崩溃的地方:
但是Utils.m
没有公开, Xcode如何获取堆栈信息和崩溃行,并最终为我打开源文件? 因为我有我的磁盘的源代码?
如果是这样,我怎么能一步一步debuggingmyNetKit.framework
,当它不崩溃?
非常感谢任何提示。
您还可以将整个库( networkLib
)项目添加到项目中,并通过在项目设置中添加依赖项来dynamic链接库。 所以你可以在你的项目中拥有所有的源代码。 所以你可以在运行时debugging它。
如果将来有人会有同样的问题(现在我正在使用Xcode 8):
您可以:
- build立你的框架项目(在这个例子中“networkLib”)
- 将项目输出(“myNetKit.framework”)复制到目标项目(“usingLibDemo”)
- 在您的设备上运行目标项目(“usingLibDemo”)
- 停止过程
- 手动从设备启动应用程序(“usingLibDemo”)
- 开放框架项目和附加到您的应用程序的进程(在第5步启动)。 在Xcode 8中:debugging – >附加到进程 – >select你的应用程序的名称。
不要忘记在你的框架项目中设置一些断点。
当使用所有符号构build库时,它包含embedded到其中的每个源文件的完整path。 如果使用hex查看器打开.a,则可以看到这一点。 有了这个,XCode将知道如何到达源文件。
设置断点更具挑战性。 你基本上必须让XCode慢慢地从你的库中发现源文件,通过join这些文件中的方法。 一旦XCode打开文件,你可以在其中的任何地方设置断点。
这有点痛苦,但是它是有效的,如果你不想把图书馆项目做成一个子项目。
处理多个框架项目时使用XCode Workspace。 当你使用一个工作区时,断点会起作用,你可以在没有来callback试的情况下find你的崩溃。 从长远来看,pipe理你的框架会容易得多。
您应该debugging分开输出框架的项目networkLib。 框架没有像结构的应用程序,所以其他项目中的框架文件不能被debugging。