Swiftdebugging器在导入ObjC框架时不显示variables值
当我用Sprite Kit创build一个新的OS X“游戏”项目,并在任何地方设置断点时,我可以看到variables值就好了:
然后我改变代码来导入我自己的框架(TilemapKit),这是一个纯粹的Objective-C框架:
import SpriteKit import TilemapKit class GameScene: SKScene { override func didMoveToView(view: SKView) { print("dang!") } }
没有其他的变化。 我甚至没有使用任何TilemapKit代码(还)。 当断点触发时,我看到这个:
只要观察variables值,整个项目就停止可debugging。 这种行为是完全一致的。 没有框架导入我可以再次debugging。
由于我在Xcode 7 beta(7A121l)和OS X 10.11开发者预览版上,我知道这可能只是一个(临时的)错误。
命令行Tiles设置为使用Xcode 7.0版本btw。 我试图在框架目标中启用模块,确保部署目标是相同的(10.11),禁用符号剥离。 我添加了一个Bridging Header,并在其中导入了TilemapKit框架(在这种情况下,除去Swift导入将仍然给我不可debugging的应用程序,所以它似乎没有关系如何或在哪里我导入框架)。
有没有人有什么可能导致这种行为的build议,我怎么可能去解决它 – 或者至less我怎么可以试图缩小这个问题?
是罪魁祸首更可能连接到项目与框架的构build设置? 我是否需要在应用程序项目中启用某些function才能使其与ObjC框架兼容? (我已经在其他链接器标志中获得了-ObjC)
更新:
我在debugging控制台中运行了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.
框架构build目录如何改变? 为什么会这样,如何解决这个问题?
PS:在一个新的ObjC应用程序中的相同的框架可以debugging就好了。
我收到了一位苹果开发者的消息,指出他们已经注意到了这个问题,并且可以通过将.framework移动到项目的子文件夹中来解决这个问题。
显然, module .. was built in directory
错误,只有当.framework与.xcodeproj aka $(PROJECT_DIR)
在同一个文件夹中才会出现。
然而,将框架移动到子文件夹并没有解决我的问题,但它仍然值得一试,直到它被固定在一个更新的Xcode 7testing版(仍然发生在testing版3)。
在我的情况下,这是因为我的项目中多余的import
语句。
我的项目混合swift和objc文件,所以我有bridging_header.h
文件中的导入语句。
在我的bridging_header.h
我有#import blah.h
在其中一个swift文件中,我从框架@import blah // From blah.framework
导入冗余头文件@import blah // From blah.framework
我从swift文件中删除了冗余导入,似乎已经修复了它。
我可以确认这是发生在Xcode版本7.0 beta 4(7A165t)。 我不得不删除我的ObjC框架来获取debugging值返回。 如果删除你的框架不是一个选项,打印方法是老派debugging,但仍然有效。
我刚才有这个问题。 在我的情况下,Prefix.pch被包含在Bridging-Header.h中。 这不是一个问题,但在我的Prefix.pch里面有很多C包括使lldb无法导入Bridging-Header。 所以我从Bridging-Header中删除了“#import Prefix.pch”,只是将“#includes”复制到我需要在swift中使用的obj-c文件中。
转到编辑计划在左上angular。
如果是释放,则将configuration更改为debugging