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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,823评论 25 709
  • [转]浅谈LLDB调试器文章来源于:http://www.cocoachina.com/ios/20150126/...
    loveobjc阅读 7,481评论 2 6
  • 随着Xcode 5的发布,LLDB调试器已经取代了GDB,成为了Xcode工程中默认的调试器。它与LLVM编译器一...
    随风飘荡的小逗逼阅读 5,227评论 0 0
  • LLDB的Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能。平时用Xc...
    CoderSC阅读 5,251评论 0 2
  • 早起学习 意外发现一个适合读书的好地方
    翮笙阅读 1,371评论 0 0