iOS.mach_msg_trap()
mach_msg_trap()
1. mach_msg() mach_msg_trap()
"
>
> 0 mach_msg_trap
> 1 mach_msg
> 2 CFRunLoopRunSpecific
> etc.
This is showing the main thread, which is just paused waiting for events. The crash is on a different thread,
but Xcode 3.1 often doesn't switch to the thread that crashed. You'll need to use the thread pop-up to
switch between the different threads to see which one actually has a crash. (Any other threads that are in
mach_msg_trap or in various functions having to do with locks or semaphores are also just idling.) " Ref[10]
2. What's trap?
"Mach system calls are commonly known as "traps", and are maintained in a Mach Trap table. " Ref[9]
3. System Trace
System Trace Profile vs. Time Profiler
"
You can use the System Trace tool in Instruments by running your App in profile mode.
Then you will get a detailed run down of all the threads in the system along with stack traces at each scheduling event the thread goes through.
There is a great video from the 2016 WWDC System Trace in Depth which will walk you through debugging a blocked thread issue.
This is much better than the Time Profiler instrument since, that tool works based off of taking samples of what is running on the CPU at intervals.
However, if your thread is blocked, it isn't running on the CPU, so - it will not be sampled. You might have your main thread blocked for
a whole second but it won't show up in Time Profiler.
" Ref[6]
"
System Trace Profiling Template
Instruments Included in Template
Points of Interest
System Load
Thread State Trace
Virtual memory Trace
System Call Trace
" Ref[7]
Reference
1. How can main thread be blocked in mach_msg_trap?
http://www.cocoabuilder.com/archive/cocoa/232843-how-can-main-thread-be-blocked-in-mach-msg-trap.html
2. kDebug
2.1 https://www.theiphonewiki.com/wiki/Kdebug
2.2 http://newosxbook.com/tools/kdv.html
2.3 https://www.slideshare.net/JohnPetrucci4/check-point-advanced-kernel-debug
3. Reaching the MACH layer
http://blog.wuntee.sexy/reaching-the-mach-layer
https://github.com/opensource-apple/xnu/
- Mach messages are sent via kernel traps.
4. mach_msg_trap
https://github.com/apple/darwin-xnu/blob/master/osfmk/mach/mach_traps.h
5. Mach Overview
https://developer.apple.com/library/content/documentation/Darwin/Conceptual/KernelProgramming/Mach/Mach.html#//apple_ref/doc/uid/TP30000905-CH209-TPXREF101
6. iOS How to determine what is blocking the UI
https://stackoverflow.com/questions/15928035/ios-how-to-determine-what-is-blocking-the-ui
7. System Trace Profiling Template
https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/ProfilingTemplates.html#//apple_ref/doc/uid/TP40004652-CH19-SW1
8. macOS MACH Traps
https://sigsegv.pl/osx-mach-traps/
9. Kernel Syscalls
https://www.theiphonewiki.com/wiki/Kernel_Syscalls
10. help-with-debugger-mach-msg-trap-message
http://www.cocoabuilder.com/archive/xcode/279565-help-with-debugger-mach-msg-trap-message.html
11. Core Data Concurrency Debugging
https://oleb.net/blog/2014/06/core-data-concurrency-debugging/
You enable the assertions by passing -com.apple.CoreData.ConcurrencyDebug 1 to your app on the command line via Xcode’s Scheme Editor.
12. Technical Q&A QA1693 Synchronous Networking On The Main Thread
https://developer.apple.com/library/content/qa/qa1693/_index.html
13. System Trace in Depth
https://developer.apple.com/videos/play/wwdc2016/411/
iOS.mach_msg_trap()的更多相关文章
- iOS开发-应用崩溃日志揭秘(一)
作为一名应用开发者,你是否有过如下经历? 为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应用商店后,还是有用户抱怨会闪退 ! 如果 ...
- iOS测试常见崩溃
什么是崩溃日志,从哪里能得它? iOS设备上的应用闪退时,操作系统会生成一个崩溃报告,也叫崩溃日志,保存在设备上.崩溃日志上有很多有用的信息,包括应用是什么情况下闪退的.通常,上面有每个正在执行线程的 ...
- 【转】iOS应用崩溃日志分析
作为一名应用开发者,你是否有过如下经历? 为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应用商店后,还是有用户抱怨会闪退 ! ...
- iOS 深入理解RunLoop
RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何利 ...
- 苹果官方 Crash文件分析方法 (iOS系统Crash文件分析方法)
对于提交的苹果官方的app,在审核的时候会给我们一些crash文件,对于这些有用的文件,里面是关于我们的bug的一些信息,那么该如何去调试呢 第一步:在任意目录创建一个目录,用来调试crash,我这里 ...
- 【iOS程序启动与运转】- RunLoop个人小结
学习iOS开发一般都是从UI开始的,从只知道从IB拖控件,到知道怎么在方法里写代码,然后会显示什么样的视图,产生什么样的事件,等等.其实程序从启动开始,一直都是按照苹果封装好的代码运行着,暴露的一些属 ...
- 【转】iOS应用崩溃日志揭秘
这篇文章还可以在这里找到 英语 If you're new here, you may want to subscribe to my RSS feed or follow me on Twitter ...
- iOS 事件处理机制与图像渲染过程(转)
iOS 事件处理机制与图像渲染过程 iOS RunLoop都干了什么 iOS 为什么必须在主线程中操作UI 事件响应 CALayer CADisplayLink 和 NSTimer iOS 渲染过程 ...
- iOS开发之Crash分析,以及收集
一 先谈谈iOS的Crash收集方式: 1. APP 发生crash,用户手机手机上肯定会有crash纪录,当然删除了该app,或是删了再装 crash纪录还是没了. 2. 如果用户设置-隐私 同 ...
随机推荐
- 【转载】 github vue 高星项目
内容 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 UI组件 element ★13489 - 饿了么出品的Vue2的web UI工具套件 Vux ★8133 - 基于Vue和 ...
- 判断单向连通图(拓扑排序+tarjan缩点)
题意: 给你一个有向图,如果对于图中的任意一对点u和v都有一条从u到v的路或从v到u的路,那么就输出’Yes’,否则输出’No’. 理解:当出现两个及以上入度为0的点(有一个就可能是别人到它,有两个的 ...
- python3 数独
数独 最近在网上看到数独,感觉非常有意思,所以就来实现以下. 一个数独题的网站(https://www.oubk.com/DailySudoku/17778/1),偷懒直接爬虫抓下来了,哈哈 代码实现 ...
- 转载:深入浅出Zookeeper(一) Zookeeper架构及FastLeaderElection机制
转载至 http://www.jasongj.com/zookeeper/fastleaderelection/: 原创文章,转载请务必将下面这段话置于文章开头处.本文转发自技术世界,原文链接 htt ...
- Split CSV/TXT file
void Main(){ var path = @"c:\sourceGit\speciesLatLon.txt"; var inputLines = File.ReadAllLi ...
- MySQL中链接查询inner join与left join使用
连接查询其实就是对两个表记录做笛卡尔乘积.如果不指定连接条件的话,则会对每行都做笛卡尔乘积,这样最后返回的结果树就会是两个表记录数的乘积:如果指定则,则仅对符合列条件的行进行笛卡尔乘积,并返回结果.在 ...
- Echart ,X轴显示的为tooltip内显示的一部分内容放在上面显示的一部分如下图所示
如图所示:X轴只显示tooltip部分内容解决方案 在xAxis下面,实现方法如下 axisLabel: { interval: 0, formatter:function(value) { var ...
- mysql--构造数据、导入导出
一.mysql造数据脚本 DELIMITER $$ DROP PROCEDURE IF EXISTS `test3`$$ CREATE /*[DEFINER = { user | CU ...
- Python-基础函数与常用模块考核
第二模块考核(2019/ 03/ 03) ### 第一模块内容1.请写出 “路飞学城alex” 分别用utf - 8和gbk编码所占的位数(口述) ➜ ~ python3 >>> b ...
- 《Dare To Dream》第六次作业:团队项目系统设计改进与详细设计
团队项目系统设计改进与详细设计 一.团队项目系统设计改进 任务1: a.分析项目系统设计说明书初稿的不足,特别是软件系统结构模型建模不完善内容. 初稿的不足:缺乏每个模块的具体业务流程详细设计和流程 ...