博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MacOS app crash文件分析与定位
阅读量:6232 次
发布时间:2019-06-21

本文共 2047 字,大约阅读时间需要 6 分钟。

1、crash文件

34  AppKit                               0x00007fff8f585374 __35-[NSApplication runModalForWindow:]_block_invoke + 6435  AppKit                               0x00007fff8f3a2b98 -[NSApplication runModalForWindow:] + 13736  XXXX                                 0x00000001004c23aa 0x100262000 + 2491306。。。。。58  AppKit                               0x00007fff8f1433db -[NSApplication run] + 92659  AppKit                               0x00007fff8f10de0e NSApplicationMain + 123760  XXXX                                 0x00000001004c0ae9 0x100262000 + 248496961  libdyld.dylib                        0x00007fffa6dd5235 start + 1复制代码

2、打开 app和符号文件所在目录,可通过 Xcode > window > Organizer > Archives 选择archive,右键 “Show in folder” ,右键 “显示包内容” ,进入 Products > Applications > XXXX > Contents > MacOS ,并将 dSYMs > XXXX.app.dSYM 也拷贝到此目录

3, 打开终端并定位到以上目录

> lldb XXXX  #注1> (lldb) add-dsym XXXX.app.dSYM> (lldb) image lookup -n main复制代码

一般返回结果的第一个条目 即为主程序的main函数,复制其地址,如下标红处 ,此地址即对应了 1)中 主线程堆栈中倒数第2个函数

Address: XXXX[0x000000010025eaa0] (XXXX.__TEXT.__text + 2476784)Summary: XXXX`main at AppDelegate.swift复制代码

4,通过1)中的偏移值计算 crash函数在image中对应的地址

> (lldb) po 0x000000010025eaa0 - 2484969> 4294967223复制代码

这个 地址即为我们主程序函数地址的基址。

根据此地址加上偏移值计算 crash函数 在image中的地址。

> (lldb) po 4294967223 + 2491306> 4297458529复制代码

5,反查这个地址对应的符号名和所在文件

(lldb) image lookup -a 4297458529Address: XXXX[0x0000000100260361] (XXXX.__TEXT.__text + 2483121)Summary: XXXX`function signature specialization 
of XXXX.AppDelegate.onCallSettings (Swift.AnyObject) -> () + 411 [inlined] static XXXX.AppDelegate.showSettingsWindow (XXXX.SettingsTabID) -> () + 22 at AppDelegate.swift:46XXXX`function signature specialization
of XXXX.AppDelegate.onCallSettings (Swift.AnyObject) -> () + 392 at AppDelegate.swift:46复制代码

至此,查到了crash的位置,AppDelegate.swift 第46行 出错了。

注1:

lldb XXXX 执行这个命令的时候可能会报错

xcrun: error: invalid active developer path复制代码

解决方法: 终端输入

xcode-select --install

回车后,系统弹出下载xcode,点击确认,下载完成后即可。(实际上不是下载xcode,可能下载xcode有关插件,下载时长约1分钟)

出现这个错误原因猜想可能是因为之前安装过xcode卸载后出现的。

转载地址:http://bsana.baihongyu.com/

你可能感兴趣的文章
生产者消费者模型
查看>>
Multi-level Contextual 3D Convolutional Neural Networks
查看>>
apidoc官网和github地址
查看>>
来到外企几天的感受
查看>>
<a>之间怎么放值</a> 挺简单的,第一次遇到···
查看>>
业界领袖们曾希望在毕业时得到的建议
查看>>
Linux禁用IPv6
查看>>
【转】linux 用户线程、LWP、内核线程学习笔记
查看>>
各种书籍
查看>>
使用注解开发springmvc
查看>>
BZOJ-4326: NOIP2015 运输计划 (二分+LCA+树上差分)
查看>>
linux并发控制之读写信号量
查看>>
MySQL表的四种分区类型
查看>>
Razor模板引擎
查看>>
Log4Net 日志配置[附带源码]
查看>>
企业级Nginx Web服务优化实战
查看>>
Google地图,Baidu地图数据供应商
查看>>
抽象类
查看>>
node溢出
查看>>
【转】充满浮躁的程序员
查看>>