首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

有赞crash平台符号化实践

dSYM file crash log> 例子: symbolicatecrash log.crash > result.log // dSYM可以跟多个 symbolicatecrash...三、symbolicatecrash符号化原理分析 通过网上找的教程来看,一般是把对应版本的crash日志,dSYM文件,App文件都放进一个目录,然后执行一下命令来进行符号化: symbolicatecrash...Binary Image的作用是建立UIKitCore与uuid的关系,当需要符号化一个UIKitCore的地址时,会找到对应的uuid,并从文件系统中查找到这个符号表。这也解释了上面第6个问题。...后续要遍历所有images,去找到每个二进制对应的dSYM,这样做提高了效率。...这种方案下线一台打包机后,会造成一部分crash日志无法符号化,目前我们正在优化,计划统一把符号表放到一台打包机上,这样就能解决这个问题。

1.4K40

macOS下利用dSYM文件将crash文件中的内存地址转换为可读符号

macOS下的symbolicatecrash也具备相应的功能。对应于Windows下的pdb文件,macOS下的crash文件解析需要用到dSYM文件。...当程序崩溃时,通过symbolicatecrash对crash文件和dSYM文件中的符号进行映射,即可将crash文件中的内存地址转换为可读的字符串。以前的博文中也进行过总结,但是并没有具体实践。...按照常规套路,先还是把*.crash文件、*.dSYM文件放到一起来,再来调用symbolicatecrash命令。先建立symbolicatecrash的软链接: ?    ...其方法是:先找到Image的load address,如下: ?     这里我的程序在内存中的加载位置为0x10c680000(尖括号中的字符串是程序的UUID)。...再次找到我们感兴趣的内存地址,如下: ?      再次运行命令: ?     至此即可分析出特定地址的符号了,调试的时候也可以确定大致的位置了。至于为什么不能全文解析crash文件暂时还不清楚。

2.5K100

iOS崩溃日志ips文件解析

,通常会遇到一些崩溃,然后他们会将这些崩溃日志(一般是ips格式的文件)反馈给开发进行分析,但是这些ips文件中的内容通常是如下图这样的,都是一些十六进制的堆栈地址,如果仅仅根据这些堆栈地址,我们基本无法做任何事情...如果不是你负责打包,那么你需要找到打包负责人拿到对应的.xcarchive文件。 ? ? 2.2 解析具体步骤 新建一个文件夹,名字叫Acrash。...】,找到symbolicatecrash。...至此,Acrash文件中总共有4个文件:.crash文件、symbolicatecrash工具、app文件、.dSYM文件。 ? 6. 打开终端,cd到Acrash文件夹中 7. 输入命令  ..../symbolicatecrash crash文件的绝对路径 dSYM的绝对路径 > log.crash ,回车。     【注意1】:log.crash是符号化后的文件名。

6.1K30

使用symbolicatecrash解析了一个crash log

如果是以前,我会找到打这个测试包的同事,让他将奔溃日志符号化后发给我。...另外,我还需要崩溃日志(测试同学给了我一个.plist文件),测试包对应的.dSYM文件和测试包对应的.app文件。.../Versions/A/Resources/symbolicatecrash 从它开头的注释中,可以了解到,它会利用Spotlight,通过UUID来搜索需要的.dSYM文件,然后找到对应的可执行文件,...所以我们可以这样把崩溃日志、.dSYM文件和.app文件放到某个目录下,先在命令行中运行: export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer...2016.01.24更新 可以用这个命令在电脑里找到某个uuid对应的dSYM文件: mdfind "com_apple_xcode_dsym_uuids == xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

82320

iOS崩溃堆栈符号化,定位问题分分钟搞定!

但如果App发布上线,开发者不可能进行调试,只能通过分析系统记录的崩溃日志来定位问题,在这份崩溃日志文件中,会指出App出错的函数内存地址,而这些函数地址是可以在.dSYM文件中找到具体的文件名、函数名和行号信息的.../SuperSDKTest.app/SuperSDKTest 下面,利用两个工具来进行一下符号化的尝试: symbolicatecrash symbolicatecrash是一个将堆栈地址符号化的脚本,...输入参数是苹果官方格式的崩溃日志及本地的.dSYM文件,执行方式如下: $ symbolicatecrash XX.crash [XX.app.dSYM] > xx.sym.crash# 如果输入.dSYM...atos 更普遍的情况是,开发者能获取到错误堆栈信息,而使用atos工具就是把地址对应的具体符号信息找到。...如果在发布的线上版本出现崩溃问题,开发者是无法即时准确的取得错误堆栈。一般地,开发者都是接入第三方的崩溃监控服务(如:腾讯Bugly),实现线上版本崩溃问题的记录和跟踪。

4.4K51

iOS开发——解析崩溃日志

而在万能的Xcode中,你可以找到自己测试机里的崩溃日志。Window -> Devices -> 选中自己的测试机 View Device Logs ,类似下图 ?...依旧是万能的Xcode给我们提供了一个工具 —— symbolicatecrash,这是一个Xcode自带的分析工具,可以通过机器上的崩溃日志和应用的.dSYM文件定位发生崩溃的位置,把Crash日志中的一堆地址替换成代码相应的位置...symbolicatecrash -type f,然后终端会返回这个文件的路径,只要找到symbolicatecrash文件, 复制然后粘贴到刚才创建的 "CrashReport" 文件夹里面....从Xcode Archive的二进制文件中找到.dSYM文件和.app文件拷贝到刚才创建的 CrashReport 文件夹里面..../symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash 这时候终端将会进行处理......

1.3K30

扒虫篇-崩溃日志解读及Crash收集

我们在Archive的时候会生成.xcarchive文件,然后显示包内容就能够在里面找到.dsYM文件和.app文件。...Symbolicatecrash Symbolicatecrash是Xcode自带的一个分析工具,可以通过机器上的崩溃日志和应用的.dSYM文件定位发生崩溃的位置,把crash日志中的地址替换成代码相应位置...文件 选中archive的版本右击,选择Show in Finder就可以选中archived 文件然后显示包内容,就可以找到dSYM文件了。...解析步骤 我在解析崩溃信息的时候,首先在桌面上建立一个Crash文件夹,然后将.Crash、app、.dSYMsymbolicatecrash放在这个文件夹中。 ?...信号量抛出后,可以被多个捕获crash的工具获取到,然后取当前的堆栈信息, 再利用该堆栈信息与原app的dsym文件进行比对, 就可以找到崩溃的代码行。

2.6K10

深入理解iOS Crash Log

在头文件中可以找到: #define SIGKILL 9 /* kill (cannot be caught or ignored) */ 表示这个这是一个无法捕获也不能忽略的异常,所以系统决定杀掉这个进程...那么,问题就来了,最后的编译过程是你不可控的,那么如何获得dsym文件呢? 答案是Apple会生成这个dsym文件,你可以从XCode或者iTunesConnect下载。...: 崩溃的可执行文件和dsym文件 所有用到的framework的dsym文件 OS版本相关的符号(这个在USB连接的时候,XCode会自动把这些符号拷贝到设备中) atos atos是一个命令行工具,.../symbolicatecrash ~/Desktop/1.crash ~/Desktop/1.dSYM > ~/Desktop/result.crash 如果报错 Error: "DEVELOPER_DIR...这种错误通常会在Exception的Subtype找到错误地址的一些详细信息。

4.1K52

如何符号化Objective-C调用栈如何符号化Objective-C调用栈

本文讲述的是符号化“残破”的栈,如果你有一个系统生成的crash日志,请交给Xcode自带的symbolicatecrash脚本。...Symbolicatecrash脚本的核心也是通过atos功能逐行符号化,但人家封装好了,比自己手动一行一行做快很多。...0x00000001000ba530 XSQSymbolicateDemo + 25904 为例 需要条件: (1)atos工具(Xcode安装时一般会自带) (2)确认app运行的架构(armv7、arm64) (3)app对应的dSYM.../XSQSymbolicateDemo.app.dSYM/Contents/Resources/DWARF/XSQSymbolicateDemo -l 0x1000b4000 0x00000001000ba530...所以仅仅凭借“一个指令在内存中的地址”和dSYM文件,是无法进行符号化的,因为这个“地址”同时依赖于ASLR生成的offset。

76710
领券