调试

作者: sudhengshi | 来源:发表于2021-08-06 11:57 被阅读0次

断点和调试器交互

help命令

  • help 列出所有命令
  • help <commond>列出某个命令更多细节,例如help print</commond>

print

  • print 打印需要查看的变量,例如print totalCount
  • print 还能使用简写prin, pri, p
  • po(print object)可以打印对象的description方法的结果
  • 打印不同格式可以用p/x number打印十六进制,p/t number打印二进制,p/c char打印字符。这里是完整清单https://sourceware.org/gdb/onlinedocs/gdb/Output-Formats.html

expression

  • expression 可以改变一个值,例如expression s
  • expression可以使用e来代替
  • e -p — dataArray 也可以打印对象的description方法的结果,等同于po

流程控制

  • continue会取消暂停,继续执行下去到达下一个断电,LLDB中使用process continue,别名continue,或者使用缩写c
  • step over会执行当前这个函数,然后继续。LLDB中使用thread step-over,next或者缩写n
  • step into指跳进一个函数调试。LLDB中使用thread step in,step或者s
  • step out会继续执行到下一个返回语句,然后再次停止
  • thread return会在当前断点处直接返回出函数,函数剩余部分不会被执行。LLDB中使用thread return NO

断点管理

  • breakpoint list可以看到所有断点,简写br li
  • breakpoint set可以创建断点,缩写br

在LLDB执行C/Objective-C/C++/Swift

  • 除了创建函数,类,block等其它的都可以做到
  • 使用e进行操作,p进行打印显示结果

在调试器中直接更新UI


(lldb) e id $myView = (id)0x7f82b1d01fd0

(lldb) e (void)[$myView setBackgroundColor:[UIColor blueColor]]

(lldb) e (void)[CATransaction flush]

查找Button的target

查看按钮按下后谁会接收到按钮发出的action


(lldb) po [$myButton allTargets]

{(

<MagicEventListener: 0x7fb58bd2e240>

)}

(lldb) po [$myButton actionsForTarget:(id)0x7fb58bd2e240 forControlEvent:0]

<__NSArrayM 0x7fb58bd2aa40>(

_handleTap:

)

观察实例变量变化

想监视vMain变量什么时候被重写了,监视这个地址什么时候被写入


(lldb) p (ptrdiff_t)ivar_getOffset((struct Ivar *)class_getInstanceVariable([MyView class], "vMain"))

(ptrdiff_t) $0 = 8

(lldb) watchpoint set expression -- (int *)$myView + 8

Watchpoint created: Watchpoint 3: addr = 0x7fa554231340 size = 8 state = enabled type = w

new value: 0x0000000000000000

相关文章

  • Flutter 调试方式

    在 Flutter 里有几种调试方式。 断点调试。 debugger 调试。 rendering 调试。 日志调试...

  • vscode使用指南(代码调试)

    代码调试 vscode 原生支持nodejs的调试,其他语言需要安装拓展支持调试 代码调试界面 调试界面 调试配置...

  • HBuilder Android真机调试

    关于调试 难者不会,会者不难。对于调试,这句话尤其合适。无论是前端调试、Java调试、PHP调试、Python调试...

  • iOS 调试

    iOS调试 - NSLog iOS调试 - 断点 iOS调试 - LLDB iOS调试 - EXC_BAD_ACC...

  • 2018-08-15 Windows调试和内核

    Windows调试 软件调试分类。按目标代码的执行模式:内核态调试,用户态调试;按调试器与调试目标的相对位置:本机...

  • WWDC2015 高级调试技巧笔记

    我将为大家介绍以下三个方面的调试技巧 视图调试高级断点调试Address Sanitizer 视图调试 视图调试的...

  • Android Studio调试

    参考 断点调试 实用调试 总结:断点调试有step into step out 等 实用调试:条件断点、日志断点、...

  • 调试手段

    本地调试 远程调试

  • linux编程入门(七)-使用gdb调试程序

    程序开发离不开调试,可以断点调试,也可以打log调试,linux下断点调试c,c++程序用gdb。 断点调试虽然很...

  • Flutter开发调试

    代码开发后出问题都会需要调试,调试方法很重要。 1. 断点调试 断点调试跟大家熟悉的 Chrome 的断点调试基本...

网友评论

      本文标题:调试

      本文链接:https://www.haomeiwen.com/subject/qdtbxqtx.html