<安全攻防之LLDB调试>

断点

  • 设置断点
$breakpoint set -n xxx 
set 是子命令
-n 是选项 是--name的缩写
或者
$b xxx

* 查看断点列表
$breakpoint list 

* 删除
$breakpoint delete 组号

* 禁用/启用
$breakpoint disable 禁用
$breakpoint enable  启用

* 遍历整个项目中满足Hello:这个字符的所有方法
$breakpoint set --selector Hello:
$breakpoint set -r Hello:
$breakpoint set --file xxx文件xxx --selector xxx方法名xxx

E:在某一个文件(ViewController.m)中满足Hello:的所有方法
$breakpoint set --file ViewController.m --selector Hello:
$breakpoint  
// 查看断点命令下所有的命令
     Commands for operating on breakpoints (see 'help b' for shorthand.)

Syntax: breakpoint <subcommand> [<command-options>]

The following subcommands are supported:
      // 清除或者废除匹配的特定的资源文件和哪一行的断点
      clear   -- Delete or disable breakpoints matching the specified source
                 file and line. 
      // 当断点触发时,添加.移除或者监听LLDB控制执行 
      command -- Commands for adding, removing and listing LLDB commands
                 executed when a breakpoint is hit. 
      //  删除特定的断点,如果没匹配到,删除所有断点
      delete  -- Delete the specified breakpoint(s).  If no breakpoints are
                 specified, delete them all. 
      // 使断点失效
      disable -- Disable the specified breakpoint(s) without deleting them.  If
                 none are specified, disable all breakpoints. 
      // 使断点有效
      enable  -- Enable the specified disabled breakpoint(s). If no breakpoints
                 are specified, enable all of them. 
      // 查看所有的断点
      list    -- List some or all breakpoints at configurable levels of detail. 
      // 修改
      modify  -- Modify the options on a breakpoint or set of breakpoints in
                 the executable.  If no breakpoint is specified, acts on the
                 last created breakpoint.  With the exception of -e, -d and -i,
                 passing an empty argument clears the modification. 
      name    -- Commands to manage name tags for breakpoints 
      read    -- Read and set the breakpoints previously saved to a file with
                 "breakpoint write".  
      // 设置
      set     -- Sets a breakpoint or set of breakpoints in the executable. 
      write   -- Write the breakpoints listed to a file that can be read in
                 with "breakpoint read".  If given no arguments, writes all
                 breakpoints.

流程控制

* 继续执行
$continue c 
* 单步运行,将子函数当做整体一步执行
$n next
* 单步运行,遇到子函数会进去
$s 

执行代码

  • help xxx 查看帮助文档 (E: help p)
// 这三个命令是相同的
(lldb) expression self.view.subviews
(__NSArray0 *) $6 = 0x00000001cde73400 @"0 elements"
(lldb) p self.view.subviews
(__NSArray0 *) $7 = 0x00000001cde73400 @"0 elements"
(lldb) e self.view.subviews
(__NSArray0 *) $8 = 0x00000001cde73400 @"0 elements"
(lldb) 

p 插入自己写的代码
p self.view.backgroundColor = [UIColor yellowColor]

查看堆栈信息

$bt
$frame select xx 查看某个Frame的信息
$frame variable 查看某个frame的参数信息

内存断点

// 对某个对象的某个属性设置内存断点(E:对p的name属性设置内存断点)
$watchpoint set variable p->_name
// 通过内存地址设置断点
$watchpoint set expression xxx地址

其他指令

// 崩溃信息中通过地址信息查找崩溃原因
$image lookup -a xxx
$image lookup -t xxx对象 查看对象的成员变量
$image list 查看所有的库列表

常用指令

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

推荐阅读更多精彩内容

  • 你是否曾经苦恼于理解你的代码,而去尝试打印一个变量的值? NSLog(@"%@", whatIsInsideThi...
    木易林1阅读 955评论 0 4
  • 前言 今天花了一天的时间终于把iOS的几种常见的调试方法给学习了一下,在这里给大家分享一下LLDB的使用,同时也是...
    Peak_One阅读 11,023评论 5 33
  • 接下来上今天的干货LLDB调试部分。日常的正向开发,Xcode提供了多种快捷键以及快捷方式方便我们开发者进行LLD...
    溪浣双鲤阅读 905评论 0 1
  •   LLDB的Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能。平时用...
    Thinkdifferents阅读 1,550评论 1 4
  • 引言: 本篇文章主要总结了一些javascript中特别基础的内容,主要涉及到DOM0级和DOM2级事件,事件流,...
    IOneStar阅读 383评论 1 2