Xcode的LLDB调试命令

LLDB的使用指令

屏幕快照 2018-05-11 下午4.49.17.png

断点设置

  • 通过名字设置C的断点

假设有个方法

void age(){
    print("age")
}

通过命令在age上设置断点

 breakpoint set -n age

其中 -n--name的缩写 ,set是子命令

  • 通过名字设置OC的断点

假设ViewController中有两个OC的方法

-(void)test1:(NSString *)string{

}
-(void)test2:(NSString *)string{

}


通过命令给这两个方法设置断点

breakpoint set -n "[ViewController test1:]" -n "[ViewController test2:]"

其中OC的方法要用""阔起来,多个断点间用空格隔开

  • 通过名字设置断点,不管方法在哪个类里

breakpoint set --selector touchesBegan:withEvent:

其中 --selector 代表方法 touchesBegan:withEvent:OC的方法名

  • 通过文件设置断点,比如:设置ViewController.m这个类里的touchesBegan:withEvent:

breakpoint set --file ViewController.m --selector touchesBegan:withEvent:

  • 遍历方法名称设置断点
    breakpoint set -r Game: 其中Game:只是方法的一部分

  • 查看当前的断点信息

指令 breakpoint list

Current breakpoints:
1: names = {'[ViewController test1]', '[ViewController exp1]', '[ViewController test2]', '[ViewController exp2]'}, locations = 0 (pending)
2: names = {'[ViewController test1:]', '[ViewController exp1:]', '[ViewController test2:]', '[ViewController exp2:]'}, locations = 2, resolved = 2, hit count = 0
 2.1: where = textIphone`-[ViewController test1:] + 46 at ViewController.m:29, address = 0x00000001006465ee, resolved, hit count = 0 
 2.2: where = textIphone`-[ViewController test2:] + 46 at ViewController.m:33, address = 0x000000010064663e, resolved, hit count = 0
  

2.1代表是第二组的第一个断点

  • 禁用某个断点breakpoint disable 1

  • 启用断点breakpoint enable 1.1

  • 删除断点 breakpoint delete 1 如果delete后不跟任何参数 默认为删除所有的断点

  • 假如进入断点以后想要继续进行下一步操作,可以直接在控制台输入c 继续操作

  • 查看其他指令系统 help

  • 查看断点的子指令 help breakpoint

  • 简写形式
    breakpoint -> break
    disable -> dis

动态的执行指令

expression 执行某段代码 expression -> p,

help p -> 'p' is an abbreviation for 'expression --' ,

po 是输出OC的对象,调用OC对象的描述方法 具体可以通过help expression查看

比如我们进入断点后想查看当前视图的子视图

(lldb) expression self.view.subviews

输出: (__NSArray0 *) $0 = 0x000060c0000064a0 @"0 elements"

其中$0 这个可以理解成控制台当前的全局参数 在后面可以继续使用

  • $0这个参数虽然在后面可以用,但是它是一个id类型,如果直接访问它原来的方法或者属性会报错,因此你可以在 p指令的时候进行一个类型强转
  • 使用p执行一段代码 代码换行使用 control + enter
  • 在控制台上下按键可以执行上一条或者下一条

给某个断点设置默认的指令

command指令

  • 添加代码 breakpoint command add 1 回车 给断点1添加代码

Enter your debugger command(s).  Type 'DONE' to end.
> 输入你的代码 
> 输入'DONE'结束

过掉断点运行,进入到断点1时就会直接执行输入你的代码这部分代码了

  • 查看添加过的指令

breakpoint command list 1 查看断点1的指令

  • 删除指令

breakpoint command delete 1删除断点1下的指令

stop-hook

每次stop的时候去执行某些方法 watchPoint(内存断点)
pause 和 debugView 不会触发stop-hook

  • 设置stop-hook

    target stop-hook add -o "frame variable" 进入断点查看当前的参数

  • 查看当前的stop-hook 删除全部list后面不跟数字

    target stop-hook list 2

  • 删除当前的stop-hook ,删除标号为1的stop-hook,如果删除全部后面不带内容

    target stop-hook delete 1

  • 禁用某一个stop-hook 屏蔽掉标号为6的stop-hook

    undisplay 6

  • 启用某个stop-hook

    display 6

  • 设置永久stop-hook
    你只需要在 /Users/你的用户 下建一个.lldbinit文件 ,每次启动lldb的时候就会加载这个文件的内容
    .lldbinit文件中 写target stop-hook add -o "frame variable" ,每次进入断点就会打印参数信息

其他的命令

  • 查看内存
    image lookup -a 0x0000000112e02796 ,

    0x0000000112e02796是崩溃信息中的一个堆区地址

  • 进入image后 可以通过down 查看下一个堆区地址 up看上一个堆区地址

  • 查看某个类的定义

    image lookup -t Person

    image list

  • 查看内存

    memory read 0x600000226520 == x 0x600000226520

    读寄存器 register read 地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容

  • LLDB的Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能。平时用Xc...
    CoderSC阅读 1,355评论 0 2
  •   LLDB的Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能。平时用...
    Thinkdifferents阅读 1,550评论 1 4
  • LLDB的Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能。平时用Xc...
    小笨狼阅读 20,463评论 31 187
  • [TOC] MachO文件结构 单个架构的mach-O文件包含:MachO Header、Load Command...
    _顺_1896阅读 432评论 0 0
  • 不要自认为它有一个趋势,而要看盘面力量对比
    新兴市场的小逻辑阅读 200评论 0 0