iOS dSYM详解和分析crash,ips文件

iOS崩溃日志解析实战:从ips文件到符号化crash的全流程指南 本文提供了iOS崩溃日志解析的完整实战指南,重点讲解如何将难以理解的.ips格式崩溃日志转化为可读信息。文章详细介绍了获取ips文件、转换为crash格式、定位匹配的dSYM文件、配置并使用symbolicatecrash工具进行符号化的全流程,并分享了处理多框架项目和常见问题的进阶技巧,帮助开发者高效定位和解决App崩溃问题。 阅读详情
AI摘要

本文详细介绍了iOS应用开发中dSYM文件的作用,它用于存储调试信息,便于符号化分析crash日志。文章还阐述了何时需要dSYM文件,如何获取dSYM、ips和crash文件,以及如何利用symbolicatecrash、atos命令和CrashSymbolicator.py脚本来进行符号化分析。此外,还提供了一个AppleScript脚本来简化符号化过程。

1.什么是dSYM文件

dSYM 文件是Xcode编译后,我们会看到一个同名的 dSYM 文件,dSYM 是保存 16 进制函数地址映射信息的中转文件,存储应用程序的调试 symbols。每次编译项目或者打包的时候都会生成一个新的 dSYM 文件,当我们软件release模式打包或上线后,不会像我们在Xcode中那样直观的看到用崩溃的错误,所以对于每一个发布版本我们都很有必要保存对应的 Archives 文件。不管你集没集成类似Buyly的三方,要符号化分析crash日志还是得要用到对应的dSYM文件,如果没有生成dSYM文件,可以看一下TARGETS下Build Settings里面有没有设置,如下图


2.什么时候会用到dSYM文件

1、APP提交审核,有闪退bug被拒,审核人员基本会上传crash文件给你,这时候就要自己符号化分析了。
2、你们编译给测试同事的包,如果你们关系好,大概率会重现一遍给你看,不然可能就是导出一个ips文件直接丢给你了,也可能还有一些不太好复现的crash。
3、自己有时候调试的时候可能会用到。

注:ips文件和crash文件不一样,Xcode13,iOS15以前设备ips文件改后缀成crash好像可以,但是之后 Apple 对符号化文件格式进行了 JSON 支持, 所以针对 iOS 15 以上产生的崩溃文件, 写入方式应该是做了调整, 所以在对 iOS 15 以上崩溃文件进行符号化时, ips改后缀会出现符号化失败, 报错 No crash report version in file 的问题,改为直接使用 CrashSymbolicator.py下面会讲到。

注:如果是发布Testflight版本,有些公司APP更新前会先提交Testflight版本公测一下,然后很多crash的日志可以通过Apple Store Connect里面对应的应用,Testflight下的反馈崩溃里面看到,可以直接Xcode打开,直接到Window->Organize->Crashes下直观看到崩溃错误


3.dSYM,ips,crash文件怎么拿到

1、dSYM
编译后Xcode13以前应该在项目的Products文件夹下,右键Show in Finder。
Xcode13后位于(/Users/用户名/Library/Developer/Xcode/DerivedData/对应的应用程序/Build/Products/Debug-iphoneos)。
打包的话位于(/Users/用户名/Library/Developer/Xcode/Archives)目录下,也可以在Xcode选择Window->Organize->Archives,Show in Finder。
2、crash
手机插上电脑Xcode选择Window->Devices and Simulators,找到对应的iphone,View Device Logs,右键Export Log。
3、ips
可能是测试同事可能其它同事可能用户,手机不能连接到电脑,可以在手机设置->隐私->分析与改进->分析数据,可以搜索对应的.ips.sycned文件然后查看导出修改成.ips的后缀就行,如果不是一眼能看到就直接搜项目名字。


4.具体怎么利用dSYM符号化分析

注:dSYM文件要和crash,ips等文件一一对应,否则符号化会失败,比如你1.0.1产生的crash,ips文件要和1.0.1编译的dSYM文件匹配,注意每次编译都会生成新的dSYM文件

1、怎么查看dSYM和ips,crash文件是否一一对应
笔者创建的项目叫Test,查看crash,ips直接双击打开查看,在下面例子图有标记,dSYM使用终端命令查看如下,Test.app.dSYM修改为对应的就行

    dwarfdump --uuid Test.app.dSYM

例子如下,终端显示的是符号 - 拼接的,crash和ips文件都是连起来的。

 

 

2、利用symbolicatecrash符号化分析crash文件

注:创建文件夹和文件夹放在哪都能自己看着办只要用到对应文件路径的时候,路径能对应就可以了,以下是笔者自己创建的方式。

首先在桌面创建一个dsym文件夹,里面再创建一个crash文件夹,dYSM文件和.crash文件拖入进去,symbolicatecrash复制进去(如果不复制工具出来,可以把文件复制到工具文件夹下执行命令),Result.crash是符号化分析后的产物,Makefile是一个用AppleScript写的一个脚本,打开执行就能得到Result.crash(前提里面写的一些路径得一一对应),还可以保存成一个应用程序双击打开执行,具体更多好玩的得自己去了解一下。symbolicatecrash工具存放在该路径下:

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources

如果不一样可能是Xcode名字不一样?可以利用下面的命令去查找,如过你的Xcode就叫Xcode话,不然改成自己Xcode路径:

find /Applications/Xcode.app -name symbolicatecrash -type f

当三个文件都在同一个文件夹下后,我们可以通过命令来得到符号化分析后的crash文件,依次执行,命令如下:注:如果不执行第二条命令会有意想不到的结果

    1 cd Desktop/dsym/crash
    2 export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
    3 ./symbolicatecrash Test.crash Test.app.dSYM > Result.crash

我们可以先来看看Test.crash日志符号化前后最后异常回溯长什么样子:

 


3、利用atos命令定位问题
其实除了symbolicatecrash工具,atos命令也能简单的分析一下,Test.app.dSYM/Contents/Resources/DWARF/Test 这里就存着具体符号

atos -o 项目名.app.dSYM/Contents/Resources/DWARF/项目名 -l 基地址 偏移后的地址
笔者使用的命令参考如下
atos -o Test.app.dSYM/Contents/Resources/DWARF/Test -l 0x1026b4000 0x1026B9904


得到的结果如上,没错就是最后异常回溯的第5行,有没有发现偏移后的地址和第6行的第一个地址是一致的,所以第1个地址是开始地址,第2个地址是基地址,第3个 + 22788就是偏移量 这是十进制的,计算如下 0x1026b4000 + 0x000005904(22788转16进制后的值)= 0x1026B9904 直接百度16进制加减法,大佬可以除外


4、利用CrashSymbolicator.py符号化解析 ips 文件
CrashSymbolicator.py脚本存放在该路径下:

/Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources

如果不一样可能是Xcode名字不一样?可以利用下面的命令去查找,如过你的Xcode就叫Xcode话,不然改成自己Xcode路径:

find /Applications/Xcode.app -name CrashSymbolicator -type f

但是这回不能像复制symbolicatecrash工具一样复制出来了,因为这个脚本import其它文件也在同一个目录下,我们可以终端命令进入到这个文件夹下把 dSYM 文件和 ips 文件放入到该文件夹下执行符号化解析命令。

下面先看两个文件的对比。

 

image.png

image.png

 

CrashSymbolicator.py 操作稍微和 symbolicatecrash 会有些不同,因为是用 python 写的脚本,所以要使用 python3 来进行调用,否则会报错。(肯定有一大波人默默的在终端输入python查看版本号发现还是2.7左右的版本,内心一顿XXX,其实python3早已经安装了,不信你们终端直接输入python3试试,如果没有那得自己安装了……)

python3 CrashSymbolicator.py -d /xxx.app.dSYM -o /xxx.crash -p /xxx.ips

-d '符号表路径' -o '输出符号化路径' -p '苹果给的崩溃日志'

如果是在 CrashSymbolicator.py 文件夹下操作,dSYM 和 ips 文件需要复制到该脚本文件夹下,命令如下:

1 cd /Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources
2 sudo python3 CrashSymbolicator.py -d Test.app.dSYM -o Result.ips -p Test.ips

5.利用AppleScript脚本快速进行符号化分析

上述在文件夹里面执行命令虽然可以完成,但是比较麻烦,笔者做了个脚本执行,下面就看看脚本里面的代码(其实就是封装了几条命令)
同样首先在之前桌面的dsym文件夹下创建一个 ips 文件夹,dYSM文件和 .ips 文件拖入进去,Makefile脚本准备好,打开执行,Result.ips文件就出来了,

image.png

 
Makefile.scpt代码如下:(具体语法这里就不做讲解了,用户名需要替换成自己的用户名,路径可以自行根据需要更改)

# 打开终端APP
tell application "Terminal"
    # 拼接导出ips结果命令 在此处替换对应的路径
    set pythonOrderStart to "python3 CrashSymbolicator.py"

    # 三个路径的前面的空格不要忽略了
    set dSYMPath to " -d /Users/用户名/Desktop/dsym/ips/Test.app.dSYM"
    set outfilePath to " -o /Users/用户名/Desktop/dsym/ips/Result.ips"
    set ipsPath to " -p /Users/用户名/Desktop/dsym/ips/Test.ips"

    set pythonOrderEnd to ";"

    # 第一条命令 进入CrashSymbolicator.py对应的文件夹下执行操作 因为CrashSymbolicator.py关联其它的库也在这个文件夹内
    set order1 to "cd /Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources;"

    # 第二条命令 分析导出ips结果文件
    set order2 to pythonOrderStart & dSYMPath & outfilePath & ipsPath & pythonOrderEnd

    # 第三条命令 打开分析的结果文件
    set order3 to "open Result.ips"

    # 拼接多条命令
    set order to order1 & order2 & order3

    #多条命令执行用;分割
    do script order

end tell
iOS 使用dsym符号化线上crash日志(ips文件) 符号化ios crash日志 阅读详情

相关推荐

dSYM文件分析

dSYM 文件 什么是 dSYM 文件 Xcode编译项目后,我们会看到一个同名的 dSYM 文件,dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中, 并且每次编译项目的时候都会生成一个新的 dSYM 文件,位于 /Users/beyond/Library/Developer/Xcode/Archives 目录下, 对

pre_eminent的JAVA学习园地 2025

dSYM文件是什么 ?

dSYM的全称是, 所以dSYM文件就是, dSYM文件中的每个 debug symbol, 对应了一个关系, 这个关系一端是源代码里真实的符号(类名称、全局变量以及方法和函数名称), 另一端则是其定义的文件号和行号.

侯仕奇的博客 3784

iOS Crash文件获取及符号化

Crash文件获取 大致可以分为两种方式:远程获取和本地获取;具体可以分为如下四种途径 1.1. 远程获取;已经上传到iTunes Connect的应用,可以通过iTunes Connect的App分析查看App崩溃情况不会有崩溃日志,如果是TestFlight测试,则可以在iTunes Connect获取到崩溃日志 1.2. 远程获取;通过Xcode菜单Window -> Orga...

gsl111000的博客 1957

dSYM的简单介绍

通过http://www.cocoachina.com/ios/20100427/1222.html 这篇文章,结合自己日常工作的理解,提炼了一下主要内容一、dsym是什么?在XCODE编译项目之后,会在app旁看见一个同名的dSYM文件.(rd称之为 符号文件)他是一个编译的中转文件,简单说就是debug的symbols包含在这个文件中.二、dsym有什么作用?当release的版本 crash...

silencewy_l的博客 9418

TestFlight崩溃分析全指南:从ips文件获取到dsym符号化完整流程(2024最新版)

本文详细介绍了2024年最新的TestFlight崩溃分析全流程,从获取ips文件到使用dsym进行符号化。涵盖了iOS崩溃日志的预处理、dSYM文件的精准匹配、现代符号化工具链配置以及高级调试技巧,帮助开发者快速定位和解决崩溃问题,提升应用稳定性。

weixin_30335575的博客 498

iOS小技能: ips 文件的分析

iOS15符号化换新工具了, iOS 15 的crash 文件改了格式, 用 Xcode 13 的 symbolicatecrash 也无法解析了,可使用脚本将新格式转换为之前的格式,再丢进去 symbolicate。dSYM 文件里存储了函数地址映射,这样调用栈里的地址可以通过 dSYM 这个映射表能够获得具体函数的位置。3)“右键——>Show in Finder” “右键——>显示包内容” aaa3ffdf-16ce-3065-bcba-293f7aee7c9b.dSYM.zip。

专注于计算机研发知识和资讯分享 2730

iOS崩溃分析:dSYM、crash与ips文件符号化实战指南

在iOS开发中,崩溃日志是排查线上问题的关键线索,但原始日志往往只是一堆十六进制地址,难以直接定位代码位置。这背后的核心概念是符号表与地址空间布局随机化(ASLR):编译器将源码转换为机器码后,函数名和行号被单独存放在dSYM文件中,而系统每次启动App时都会随机化加载基地址,导致崩溃地址必须结合dSYM和加载偏移量才能还原。理解这一原理,对于高效使用crash日志解析工具至关重要。无论是从设备导出的.ips文件,还是通过Xcode Organizer、symbolicatecrash脚本或atos命令进行

weixin_31102231的博客 121

什么是 WhatsApp云控 WhatsApp群发,WhatsApp协议,他们有什么区别?

下面我们sensws讲解下什么是WhatsApp云控 WhatsApp群发,WhatsApp协议

sendws的博客 3875

iOS crash报告符号化,.ips文件分析

项目中一部分测试是外包的,测试人员发现了一个偶现的bug,并把.ips文件提供给我们。 下面开始解析crash文件 1.在桌面新建一个文件夹,名字叫crash 2.将.ips文件更名为.crash文件并放到crash文件夹中 3.前往文件夹路径  /应用程序/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versio

breeze的博客 6179

Zynq裸机调试RTL8211FS网卡踩坑记:从ping不通到完美兼容的完整代码修改

本文详细记录了在Zynq平台上使用Xilinx SDK(XSDK)调试RTL8211FS网卡的完整过程,从最初的ping不通问题到最终实现完美兼容的解决方案。通过分析PHY芯片的寄存器配置差异,提供了关键代码修改和调试技巧,帮助开发者快速解决类似问题。

weixin_42550597的博客 419

LLaMA-Factory全面指南:从训练到部署

LLaMA-Factory项目是一个专注于大模型训练、微调、推理和部署的开源平台。其主要目标是提供一个全面且高效的解决方案,帮助研究人员和开发者快速实现大模型的定制化需求。简化大模型训练流程:通过提供一系列预设的训练脚本和参数配置,降低用户在训练大模型时的技术门槛,使得即使是初学者也能轻松上手。增强模型微调能力:支持多种微调方法,如LoRA、QLoRA等,使用户能够根据特定任务需求对模型进行精细调整,从而提升模型性能。优化推理和部署体验。

全世界的博客 1万+

MacSymbolicator终极指南:3步完成iOS/macOS崩溃报告符号化

作为iOS或macOS开发者,你是否曾经面对过一堆难以解读的十六进制内存地址,苦苦思索着崩溃究竟发生在哪一行代码?MacSymbolicator正是为你解决这一痛点的终极工具!这款免费的开源应用能够将晦涩难懂的崩溃报告转化为清晰可读的代码位置信息,让调试工作变得简单高效。无论你是新手开发者还是经验丰富的工程师,这款工具都能帮助你快速定位应用崩溃的根本原因,显著提升问题解决效率。🎯 ## 项目概

gitblog_00330的博客 512

扣子(coze)案例^第22期:零代码打造小红书竞品监控系统+AI自动生成运营策略建议

本文详细介绍了如何利用扣子(coze)平台零代码搭建小红书竞品监控系统。该系统通过自动化工作流抓取竞品笔记数据,并存入飞书多维表格,结合AI能力自动生成包含可视化分析报告在内的运营策略建议,帮助运营者高效进行数据驱动的市场分析。

weixin_29313239的博客 1004

Apple 平台 .NET 崩溃日志符号化实战:apple-crash-symbolication 技能的设计演进与自动化实现

`.ips` 崩溃日志(iOS 15+ / macOS 12+ 的 JSON 格式)中的原生回溯往往只包含 `libcoreclr.dylib`、`libmonosgen-2.0` 这类二进制镜像名与裸地址,无法直接定位到 .NET 运行时源码。`plugins/dotnet-diag` 插件中的 `apple-crash-symbolication` 技能正是为解决这一问题而生:它解析 .ips

gitblog_00437的博客 959

解锁SPWM电压利用率:三次谐波注入幅值的黄金分割点

本文深入探讨了SPWM电压利用率的提升方法,重点介绍了三次谐波注入技术及其黄金分割点(1/6比例)。通过数学推导和工程实践,揭示了如何通过特定幅值的三次谐波注入将电压利用率从86.6%提升至115%,与SVPWM相当。文章还提供了实验室调试流程和DSP实现代码,帮助工程师优化逆变器设计。

weixin_30729609的博客 915

Tiff、jpg图片怎么样添加地理坐标信息

Tiff、jpg图片怎么样添加地理坐标信息 一般,外业调查只有地图资料,如专题图、或者地形图,如何把这些地图资料的扫描地图带上坐标信息,从而内业实现信息化处理?以上问题,可以解决,但根据不同情况有不同的处理方法。     第一种,上面有经纬度外框,图片是矩形,但是没有地理信息。 通过图框的两个角的坐标确定范围,分别是左上(140°E,30°N);右下(150°W,30°N) 解决方

树木_xzw的博客 2万+

iOS crash dSYM

前段时间,项目重构完成,模块添加完毕,然后欣喜的准备上线。然后。就出现了下图的情景。 app只支持iPhone,不支持iPad,然后,悲剧原因都会有一个2.10 iPhone Apps must also run on iPad without modification, at iPhone resolution, and at 2X iPhone 3GS re

wwwwwwwwwwwwdi的博客 7561

AC360变频器使用案例

AC360变频器使用案例!

QING_BOSS的博客 517

iOS之解析ips文件

iOS之解析ips文件导出ips文件dSYM配合symbolicatecrash配合执行解析 导出ips文件 途径一: 手机连接Xcode查看和导出 Xcode -> Window -> Devices and Simulators -> View Device Logs 途径二: 直接在手机上导出,设置-分析-分析数据-找出对应时间点的crash文件 dSYM配合 .dSYM ...

TalonSop的博客 4037

车载以太网:PHY(物理层)介绍

本文以TJA1101芯片为实例介绍了车载以太网PHY(物理层)组成。

kevin1499的博客 6231

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

如何使用dSYM文件来符号化崩溃信息

iOS崩溃日志符号化摘要:本文介绍了如何将不可读的崩溃堆栈信息转换为可读格式。主要内容包括:1)符号化必要性,原始崩溃日志难以定位问题;2)获取dSYM文件的方法,包括调试环境配置和从ipa包提取;3)手动分析.crash文件,展示了崩溃日志结构。通过dSYM文件中的地址映射关系,可将十六进制地址转换为具体的函数名和行号,帮助开发者快速定位崩溃原因。文中详细说明了Xcode配置、命令行工具使用及日志分析方法。

chaoyuan899的专栏 1071

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

iOS Crash收集与分析详解(基础篇)

前言: 最近测试妹子老是抱怨我偶现的Bug不好复现,我这边出于偷懒(其实是工作很忙)一直再说不能复现Bug的妹子不是好测试,最近闲下来了,正好谈谈Crash的收集和分析。 一、Crash收集 噔噔噔噔~万能的官方文档又出现了,先上地址Understanding and Analyzing Application Crash Reports Crash收集与解析流程图 通过上图我们可以发现Crash的收集主要有两种方式。 1、使用Xcode从设备获取崩溃日志: 如果你把你的手机连接到Mac

feelinghappy的专栏 2729

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

测试开发-iOS真机Crash Log 的获取和分析

本文主要介绍iPhone的crash log获取方式和log的符号化处理,通过符号化流程可封装成脚本,稳定测试monkey中可直接对捕获的crash log进行解析

Try My Best! 2322

iOS 解析.IPS崩溃文件

iOS崩溃日志ips文件解析 iOS崩溃日志ips文件解析 一 简介   测试组的同事在进行稳定性测试时,通常会遇到一些崩溃,然后他们会将这些崩溃日志(一般是ips格式的文件)反馈给开发进行分析,但是这些ips文件中的内容通常是如下图这样的,都是一些十六进制的堆栈地址,如果仅仅根据这些堆栈地址,我们基本无法做任何事情,连最基本的崩溃定位都做不到。那么,在iOS开发中,还有一些其他的方法可以...

qq_30754211的博客 2162

iOS .crash 或 .ips 日志符号化

iOS .crash 或 .ips 日志符号化 准备文件 symbolicatecrash .dSYM 奔溃文件(.crash或.ips) 日志符号化的过程: 先新建个文件夹,假设文件夹A 1、找 symbolicatecrash 文件,在终端输入命令查找 find /Applications/Xcode.app -name symbolicatecrash -type f 选择下面文件放到文件夹A中 /Applications/Xcode.app/Contents/SharedFrameworks/

Ashimar_ZHZ的博客 1435

如何分析 iOS 中的 Crash logs

当你收到不可读的崩溃信息时,你可以在 Xcode 的帮助下对崩溃日志进行符号化。作为开发者,识别符号并确保能够修复这个崩溃至关重要。我们很多开发者常用一些在线平台来统计和解决崩溃,比如 Firebase 和 Bugly 平台,它们将上报我们的线上崩溃信息日志。但是,在某些情况下,我们可以从控制台提取对应的崩溃文件,比如 IPS 文件,在读取这些日志之前,需要对符号进行符号化。今天就来讲讲相关的内容。

Rey的技术博客 1099
上一篇: 使用定位CLLocationManager时,设置了代理,但是不走代理方法
下一篇: Xcode14 pod 报错 FrozenError RuntimeError
liangyi_csdn
博客等级 码龄12年 26粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值