lldb命令常用

LLDB在xcode4.3或者之后的版本里面是默认的调试器。假如你正在使用老一点版本的xcode的话,你又GDB调试器。他们有一些基本的相同的命 令,因此假如你的xcode使用的是“(gdb)”提示,而不是“(lldb)”提示的话,你也能够更随一起做,而没有问题。

“po”命令是“print object”(打印对象)的简写。“$eax”是cup的一个寄存器。在一个异常的情况下,这个寄存器将会包含一个异常对象的指针。注意:$eax只会在模拟器里面工作,假如你在设备上调试,你将需要使用”$r0″寄存器。

例如,假如你输入:


(lldb) po [$eax class]

你将会看像这样的东西:


(id) $2 = 0x01446e84 NSException

这些数字不重要,但是很明显的是你正在处理的NSException对象在这里。

你可以对这个对象调用任何方法。例如:


(lldb) po [$eax name]

这个将会输出这个异常的名字,在这里是NSInvalidArgumentException,并且:


(lldb) po [$eax reason]

这个将会输出错误消息:


(unsigned int) $4 = 114784400 Receiver () has no
segue with identifier 'ModalSegue'

 

注意:当你仅仅使用了“po $eax”,这个命令将会对这个对象调用“description”方法和打印出来,在这个情况下,你也会得到错误的消息。

 

 

 

实用LLDB命令

命令名 用法 说明
expr expr 表达式 可以在调试时动态执行指定表达式,并将结果打印出来,很有用的命令。
po po 表达式 与expr类似,打印对象,会调用对象description方法。是print-object的简写
print print (type) 表达式 也是打印命令,需要指定类型。
bt bt [all] 打印调用堆栈,是thread backtrace的简写,加all可打印所有thread的堆栈。
br l br lbreakpoint list的简写
process continue l process continue 简写:c
thread step-in l thread step-in l 简写:s
thread step-inst l thread step-inst l 简写:si
thread step-over l thread step-over l 简写:n
thread step-over-inst l thread step-over-inst l 简写:ni
thread step-out l thread step-out l 简写:f
thread list thread list 简写:th l

### GDB 介绍 GDB(GNU Debugger)是一个由 GNU 项目开发的强大的开源调试器,用于调试各种编程语言编写的程序,如 C、C++、Fortran 等。它可以在多种操作系统上运行,包括 Linux、macOS 和 Windows(通过 MinGW 或 Cygwin),能够帮助开发者定位程序中的错误,检查程序的运行状态,查看变量的值等。 ### GDB 使用方法 以下是一些常见的 GDB 使用场景和对应的命令示例: 1. **启动 GDB 并加载程序**: ```bash gdb ./your_program ``` 2. **设置断点**: ```gdb break main # 在 main 函数处设置断点 break 10 # 在第 10 行设置断点 ``` 3. **运行程序**: ```gdb run ``` 4. **单步执行**: ```gdb next # 单步执行,不进入函数内部 step # 单步执行,进入函数内部 ``` 5. **查看变量值**: ```gdb print variable_name # 打印变量的值 ``` 6. **继续执行**: ```gdb continue # 继续执行程序,直到下一个断点 ``` ### LLDB 介绍 LLDB 是一个基于 LLVM 项目的高性能调试器,它是 macOS 和 iOS 开发中默认的调试器。LLDB 具有与 GDB 类似的功能,但在性能和用户体验上有一些改进,支持多种编程语言,如 C、C++、Objective - C、Swift 等。 ### LLDB 使用方法 以下是一些常见的 LLDB 使用场景和对应的命令示例: 1. **启动 LLDB 并加载程序**: ```bash lldb ./your_program ``` 2. **设置断点**: ```lldb breakpoint set -n main # 在 main 函数处设置断点 breakpoint set -l 10 # 在第 10 行设置断点 ``` 3. **运行程序**: ```lldb run ``` 4. **单步执行**: ```lldb next # 单步执行,不进入函数内部 step # 单步执行,进入函数内部 ``` 5. **查看变量值**: ```lldb expression variable_name # 打印变量的值 ``` 6. **继续执行**: ```lldb continue # 继续执行程序,直到下一个断点 ``` ### GDB 和 LLDB 的区别对比 1. **性能**:LLDB 在某些情况下性能更好,特别是在处理大型项目时,它的启动速度和响应速度可能更快。 2. **平台支持**:GDB 具有更广泛的平台支持,可在多种操作系统上使用;而 LLDB 主要用于 macOS 和 iOS 开发。 3. **集成度**:在苹果的开发环境(如 Xcode)中,LLDB 有更好的集成度,使用起来更加方便;GDB 在 Linux 开发环境中更为常用。 4. **命令语法**:两者的命令语法有相似之处,但也存在一些差异,例如设置断点和打印变量的命令在格式上略有不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值