IOS 调试lldb命令常用----po

来源:互联网 发布:java web 反编译 编辑:程序博客网 时间:2024/05/22 08:26

lldb命令常用(备忘)

假如你准备在模拟器里面运行这个,你可以在“(lldb)”提示的后面输入下面的:

(lldb) po $eax

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命令

命令名 用法 说明


exprexpr 表达式可以在调试时动态执行指定表达式,并将结果打印出来,很有用的命令。popo 表达式与expr类似,打印对象,会调用对象description方法。是print-object的简写printprint (type) 表达式也是打印命令,需要指定类型。btbt [all]打印调用堆栈,是thread backtrace的简写,加all可打印所有thread的堆栈。br lbr lbreakpoint list的简写process continue lprocess continue简写:cthread step-in lthread step-in l简写:sthread step-inst lthread step-inst l简写:sithread step-over lthread step-over l简写:nthread step-over-inst lthread step-over-inst l简写:nithread step-out lthread step-out l简写:fthread listthread list简写:th l





0 0