在 lldb 中切换到 Objective-C 模式

Switch to Objective-C mode in lldb

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

例如,我希望能够输入 expr id $foo = [[SomeClass alloc] initWithBar:@"quux"]; 而不是 Swift 等价物。

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

Swift 4.0

创建一个像 "eco" 这样的别名来打印 objective-c 个对象:

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

Advanced debugging with Xcode and LLDB 来自 WWDC 2018,表明这可以通过以下命令完成:

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

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

error: use of undeclared identifier 'self'

为避免此问题,您需要将需要在上下文更改之前计算的任何变量括在反引号中 `。例如:

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