在lldb中调试时导入头文件
Import header file when debug in lldb
现在我们可以导入模块
(lldb) expr @import UIKit
这个import
是什么意思?当我们导入模块时调试器会发生什么。
我们可以用它在静态库中导入一些私有头文件吗?如何?
运行 @import <Framework>
在调试器中的作用与它在源代码中的作用几乎相同,使类型和方法签名可用于实现 lldb 表达式解析器的编译器。
它不会使框架中的代码可用,只有类型可用,并且它不适用于一组随机 headers,仅适用于具有适当模块映射的 clang 模块。
如果要在调试器的表达式解析器中引入一些内部类型,可以使用表达式前缀设置target.expr-prefix
。
下面的示例代码和命令说明了 Jim 的一些回答:
框架
这个框架叫做rusty_nails
。它在我的 iOS 应用中发货。
class Hello{
static func world() {
print("hello from a static method")
}
}
调试器命令
使用 lldb 连接到您的 iOS 应用程序。
(lldb) po Hello()
error: use of undeclared identifier 'Hello'
(lldb) exp import rusty_nails
error: unknown type name 'import'
(lldb) settings set target.language swift
(lldb) exp import rusty_nails
(lldb) po Hello()
<Hello: 0x60000001a630>
(lldb) po Hello.world()
hello from a static method
为 lldb 导入语法
(lldb) expr @import <stdbool.h> // C and Objective-C
(lldb) exp import UIKit // Swift
帮助 LLDB(当项目有 Swift、Obj-C 和 C 时)
(lldb) po bool $foo = true;
error: <EXPR>:3:5: error: consecutive statements on a line must be separated by ';'
(lldb) settings set target.language objc
(lldb) expr @import <stdbool.h>
(lldb) po bool $foo = true;
(lldb) po $foo
true
现在我们可以导入模块
(lldb) expr @import UIKit
这个import
是什么意思?当我们导入模块时调试器会发生什么。
我们可以用它在静态库中导入一些私有头文件吗?如何?
运行 @import <Framework>
在调试器中的作用与它在源代码中的作用几乎相同,使类型和方法签名可用于实现 lldb 表达式解析器的编译器。
它不会使框架中的代码可用,只有类型可用,并且它不适用于一组随机 headers,仅适用于具有适当模块映射的 clang 模块。
如果要在调试器的表达式解析器中引入一些内部类型,可以使用表达式前缀设置target.expr-prefix
。
下面的示例代码和命令说明了 Jim 的一些回答:
框架
这个框架叫做rusty_nails
。它在我的 iOS 应用中发货。
class Hello{
static func world() {
print("hello from a static method")
}
}
调试器命令
使用 lldb 连接到您的 iOS 应用程序。
(lldb) po Hello()
error: use of undeclared identifier 'Hello'
(lldb) exp import rusty_nails
error: unknown type name 'import'
(lldb) settings set target.language swift
(lldb) exp import rusty_nails
(lldb) po Hello()
<Hello: 0x60000001a630>
(lldb) po Hello.world()
hello from a static method
为 lldb 导入语法
(lldb) expr @import <stdbool.h> // C and Objective-C
(lldb) exp import UIKit // Swift
帮助 LLDB(当项目有 Swift、Obj-C 和 C 时)
(lldb) po bool $foo = true;
error: <EXPR>:3:5: error: consecutive statements on a line must be separated by ';'
(lldb) settings set target.language objc
(lldb) expr @import <stdbool.h>
(lldb) po bool $foo = true;
(lldb) po $foo
true