【发布时间】:2015-09-22 00:57:40
【问题描述】:
当我使用 Sprite Kit 创建一个新的 OS X“游戏”项目,并在任何我能看到变量值的地方设置断点时:
然后我更改代码以导入我自己的框架(TilemapKit),这是一个纯 Objective-C 框架:
import SpriteKit
import TilemapKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
print("dang!")
}
}
没有进行其他更改。我什至没有使用任何 TilemapKit 代码(还)。当断点触发时,我看到:
就观察变量值而言,整个项目不再可调试。这种行为是完全一致的。如果没有框架导入,我可以再次调试。
由于我使用的是 Xcode 7 beta (7A121l) 和 OS X 10.11 开发者预览版,我知道这可能只是一个(临时)错误。
命令行磁贴设置为使用 Xcode 7.0 版本顺便说一句。我尝试在框架目标中启用模块,确保部署目标相同(10.11),禁用符号剥离。我添加了一个 Bridging Header 并在其中 #imported TilemapKit 框架(在这种情况下删除 Swift 导入仍然会给我不可调试的应用程序,所以我如何或在何处导入框架似乎并不重要)。
是否有人对可能导致此行为的原因以及我如何解决它 - 或者至少我可以如何尝试缩小问题范围提出建议?
罪魁祸首是否更可能与项目的构建设置与框架的构建设置有关?我是否需要在应用项目中启用某些功能以使其与 ObjC 框架兼容? (我已经在其他链接器标志中获得了 -ObjC)
更新:
我在调试控制台中运行po self,发现这个通知:
<built-in>:3:6: error: module 'TilemapKit' was built in directory '/TilemapKit.framework' but now resides in directory './TilemapKit.framework'
#define __clang_major__ 7
^
missing required module 'TilemapKit'
Debug info from this module will be unavailable in the debugger.
framework build 目录怎么变了?为什么这很重要以及如何解决这个问题?
PS:新的 ObjC 应用中的相同框架可以正常调试。
【问题讨论】:
-
即使我在使用 Twitter 提供的一组新框架时也面临同样的问题。无法调试任何东西。只显示变量名,除此之外什么都没有。对我来说,它显示了这个错误。
error: module 'Fabric' was built in directory '/Fabric.framework' but now resides in directory './Fabric.framework' -
很高兴知道,听起来像是一个普遍的问题。
-
XCode7beta3 中的同样问题
-
Xcode 11.2.1 仍然存在,老实说 Apple。 5 年期。
标签: xcode debugging frameworks swift2 xcode7-beta2