MacOS app crash文件分析与定位

1、crash文件

34  AppKit                               0x00007fff8f585374 __35-[NSApplication runModalForWindow:]_block_invoke + 64
35  AppKit                               0x00007fff8f3a2b98 -[NSApplication runModalForWindow:] + 137
36  XXXX                                 0x00000001004c23aa 0x100262000 + 2491306
。。。。。
58  AppKit                               0x00007fff8f1433db -[NSApplication run] + 926
59  AppKit                               0x00007fff8f10de0e NSApplicationMain + 1237
60  XXXX                                 0x00000001004c0ae9 0x100262000 + 2484969
61  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 4297458529

Address: XXXX[0x0000000100260361] (XXXX.__TEXT.__text + 2483121)

Summary: XXXX`function signature specialization <Arg[0] = Dead and Owned To Guaranteed, Arg[1] = Dead> of XXXX.AppDelegate.onCallSettings (Swift.AnyObject) -> () + 411 [inlined] static XXXX.AppDelegate.showSettingsWindow (XXXX.SettingsTabID) -> () + 22 at AppDelegate.swift:46

XXXX`function signature specialization <Arg[0] = Dead and Owned To Guaranteed, Arg[1] = Dead> 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卸载后出现的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值