在lldb中切换到Objective-C模式

时间:2016-08-31 16:17:06

标签: ios lldb

当我在Xcode中调试Swift应用程序时,调试器需要Swift格式的表达式。如何将其切换为期望Objective-C表达式?

例如,我希望能够输入{{1}}而不是Swift等价物。

2 个答案:

答案 0 :(得分:11)

Swift 3.0或使用前: 您可以使用以下命令识别LLDB中所有可用语言的名称。

(lldb)help <language>

Swift 4.0

(lldb)help <source-language>

创建“eco”之类的别名来打印objective-c对象:

(lldb)command alias eco expression -l objective-c -o --
(lldb)eco [[UIApplication sharedApplication] userHomeDirectory] 
/Users/...

答案 1 :(得分:1)

WWDC 2018中的

Advanced debugging with Xcode and LLDB显示可以使用以下命令完成此操作:

expression -l objc -O -- [doYourStuff here]

但是这里需要注意一个重要的事情,从Swift切换到Objective C框架会创建一个新上下文。实际上,这意味着您可能会遇到类似以下错误:

error: use of undeclared identifier 'self'

为避免此问题,您需要将所有需要在上下文更改前进行评估的变量括在反引号`中。例如:

expression -l objc -O -- [`self` class]