美文网首页Fuck iOS EveryDay
LLDB命令--image命令(通过崩溃栈定位崩溃位置)

LLDB命令--image命令(通过崩溃栈定位崩溃位置)

作者: hello_iOS程序媛 | 来源:发表于2018-05-04 17:27 被阅读184次

image在Windows中称为镜像。
在lldb中为可执行文件和共享库查询命令。

1.如何查看image命令和相应子命令的描述
2.image list命令解析
3.image lookup命令解析

1.如何查看image命令和相应子命令的描述

lldb下通过image help 查看image命令描述

image help

查看子命令描述 help <command> <subcommand>
如help image list

help image list

2.image list命令解析

image list用来查看工程中可执行image和依赖的共享库image。

image list前几条 image list后几条

image list在我的工程里列出了464条,第一条是我们的app的可执行文件,第二条和后面是相关的库。通过image list也可以看到相关库的内存地址。

3.image lookup命令解析

image lookup
  • image lookup 可以用来查找可执行文件或共享库的原始地址,当程序崩溃的时候,可以使用这条命令来查找崩溃所在的具体位置

如下代码

  NSArray *array = @[@1, @2];
  NSLog(@"item 3: %@", array[3]);

运行崩溃信息如下:

运行崩溃信息

在模拟器崩溃到哪一行是可以看到的,在真机上和调试别人代码是看不到的,在真机上是一堆地址,如上图所示。
上述crash根据call调用栈信息如何定位到具体哪行代码出现问题:
image lookup -a 地址 = image lookup --address 地址

image lookup
Address: RunLoop--ConfiguringRunloopSources[0x0000000100005974] (RunLoop--ConfiguringRunloopSources.__TEXT.__text + 588)
Summary: RunLoop--ConfiguringRunloopSources`-[ViewController memoryAnalyse] + 368 at ViewController.m:65

最后可以看到是ViewController.m的第65行导致的崩溃

  • image lookup —type 类型 查看具体的类型 相当于把对应类型的头文件拿出来,快速查看类的所有信息
image lookup —type 类型

image命令还有许多其它功能,具体可以参考Executable and Shared Library Query Commands

相关文章

  • LLDB命令--image命令(通过崩溃栈定位崩溃位置)

    image在Windows中称为镜像。在lldb中为可执行文件和共享库查询命令。 1.如何查看image命令和相应...

  • LLDB 命令使用

    命令 "image lookup -a",用于寻找栈地址对应的代码位置 从上图中我们可以看到当程序崩溃时并不能定...

  • XCode动态查询崩溃原因

    LLDB 命令 动态调试 1、查看崩溃日志,分析堆栈帧,找到崩溃帧所在的前一帧的地址; 2、使用命令target ...

  • 解决Xcode 7.3打断点崩溃

    Xcode 升级到7.3时打断点使用lldb命令输出对象的时候,Xcode经常崩溃, 因此各种不爽。通过查看sta...

  • 崩溃日志解析-atos

    在应用发布到appStore时,会出现各种崩溃问题,这时可以通过atos及DSYM,定位具体崩溃的位置帮助定位问题...

  • LLDB调试 ☞ Image lookup

    1.1 image lookup -address 查找崩溃位置 当你遇见数组崩溃,你又没有找到崩溃的位置,只扔给...

  • XCode中main.m直接crash

    问题描述 解决方法xcode gdb/lldb调试命令ps:主要学到的是btios崩溃的解决iOS捕获异常,常用的...

  • LLDB扩展库chisel

    lldb最基本的命令help 可以查看所有lldb命令,通过help command 可以查看该命令的作用和使用s...

  • iOS内存错误EXC_BAD_ACCESS的解决方法

    再次崩溃时会打印出如下 如果崩溃是发生在当前调用栈,通过上面的做法,系统就会把崩溃原因定位到具体代码中。但是,如果...

  • LLDB 使用

    LLDB 使用 LLDB(Low Lever Debug)命令结构 其中: (命令)和 (子命令):LLDB调试命...

网友评论

    本文标题:LLDB命令--image命令(通过崩溃栈定位崩溃位置)

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