繁体   English   中英

当多个项目同时打开时,XCode如何知道要调试哪个项目?

[英]How does XCode know which project to debug into when multiple projects are open simultaneously?

TL; DR版本

这个问题的出现是因为我有多个框架(我已经构建了)和一个使用所述框架的客户端项目。 现在,当我打开客户端项目并尝试调试到框架时,它不起作用。

但是,如果我打开了与框架关联的项目,那么调试似乎可行(尽管有一些奇怪的断点问题我看不到被触发)。

我查看了Apple的文档,也许答案隐藏在某处,但我无法在Xcode调试指南中找到它。

长版

这个问题对我来说很重要的原因是,我和同事对于如何在我们构建的框架中导入标头存在分歧。

我倾向于使用框架标题(使用客户端应用程序):

#import "FrameworkA/HeaderA.h"
#import "FrameworkB/HeaderB.h"

另一方面,他喜欢导入框架标题(使用客户端应用程序),如下所示:

#import "HeaderA.h"
#import "HeaderB.h"

并在客户端应用程序的构建目标中指定标头搜索路径。

使问题进一步复杂化的是,这些框架中的一些具有相互依赖性。 例如,FrameworkB具有以其格式引用的FrameworkA的标头:

#import "HeaderA.h"

他这样做的论点是调试只有在我们以这种方式导入头文件时才有效。 我觉得在标题导入样式和调试之间会有一个关系,这似乎很可疑,但我不确定XCode如何在调试期间选择要链接的文件,因此问题。

提前感谢您对此查询的任何帮助。

您将项目引用添加到目标,并确保Xcode知道在哪里找到调试符号。

#import <FrameworkA/HeaderA.h>

这是要走的路(内部和外部声明)。 原因? 随着图书馆的发展,另一种方法更有可能引发问题。 附加资格消除任何情况的歧义(除非您的搜索路径中有两个FrameworkA/ s),最好现在明确地对文件进行限定,而不是当您的客户告诉您他们不能将您的库与其他库一起使用时,或者他们只能在某些条件下使用它们。 然后你必须解决问题和重新安装(这种东西有一种方式发生在不方便的时间= p)。 这是确保您开发出强大界面的一个简单措施。

也许人们忽视的最重要的部分是产品的位置:为目标使用自定义的中央构建位置 - 许多人使用默认位置,即xcodeproject。 否则,Xcode可能无法找到调试信息。

最后,在Xcode中调试复杂项目可能非常......让我们称它为“有问题”。 因此,即使您已正确配置所有内容,也不要期望调试体验完美。 使用Xcode在早期将断言和单元测试集成到开发周期中的更多理由。 事实是,无论你怎么努力,调试器都可能没用 - 这不是一个新问题。 希望LLDB能够改善我们的调试体验。

祝好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM