首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏谈补锅

    This application is modifying the autolayout engine from a background thread, which can lead to engi

    0x04a2f9cd _dispatch_client_callout + 14 42 libdispatch.dylib + 570 44 libdispatch.dylib 0x04a157bb _dispatch_root_queue_drain + 550 45 libdispatch.dylib 0x04a1558e _dispatch_worker_thread3 + 115 46 libsystem_pthread.dylib 0x04a2f9cd _dispatch_client_callout + 14 43 libdispatch.dylib + 570 45 libdispatch.dylib 0x04a157bb _dispatch_root_queue_drain + 550 46

    1.7K30发布于 2018-09-27
  • 来自专栏欧阳大哥的轮子

    iOS疑难Crash的寄存器赋值追踪排查技术

    + 16 12 libdispatch.dylib _dispatch_queue_serial_drain + 928 13 libdispatch.dylib _dispatch_queue_invoke + 884 14 libdispatch.dylib _dispatch_root_queue_drain + 540 15 0x00000001807ae9e0 0x1807ad000 + 6624 11 libdispatch.dylib 0x00000001807ae9a0 0x1807ad000 + 6560 12 libdispatch.dylib 0x00000001807bcad4 0x1807ad000 + 64212 13 libdispatch.dylib 0x00000001807b22cc 0x1807ad000 + 21196 14 libdispatch.dylib 0x00000001807bea50

    3.8K30发布于 2021-04-01
  • 来自专栏iOS技术

    记 os_object_release Crash 排查

    Crash 信息 线上存在一个持续很久的 Crash,由于没有明确业务栈且量级不算大,让它成为了老赖之一,Crash 栈是这样的: Thread 55 0 libdispatch.dylib 0x0000000188a8cf8c __os_object_release_internal_n + 80 1 libdispatch.dylib 0x0000000188a96eec __dispatch_lane_invoke + 1152 2 libdispatch.dylib 0x0000000188aa14bc __dispatch_workloop_worker_thread 那就用 hopper 直接打开 uuid 对应的 libdispatch.dylib 可执行文件吧,找到偏移处: 接下来就要确认bl _os_object_release_internal_n时x0寄存器值怎么来的 那其它线程引起 queue 释放的时机和当前 Crash 时机应该很近,也就是说其它线程此时的堆栈大概率有释放这个dispatch_queue_t的调用,排查后发现基本上在另外一个线程都有这么一段调用栈: 9 libdispatch.dylib

    75130编辑于 2022-12-10
  • 来自专栏HelloCode开发者学习平台

    iOS底层分析之应用程序加载流程

    _objc_init由上层_os_object_init发起调用,_os_object_init存在于库里 libdispatch 打开libdispatch工程,搜索_objc_init 由此可以说明 ,objc工程里的_objc_init函数,的确是由libdispatch工程的_os_object_init函数发起的。 按照前面的思路,继续搜素libdispatch_init DISPATCH_EXPORT DISPATCH_NOTHROW void libdispatch_init(void) { ... _os_object_init(); ... } (滑动显示更多) libdispatch_init由libSystem_initializer发起,搜索: 发现libSystem_initializer libdispatch_init(); ... } (滑动显示更多) 继续查看图片 发现ImageLoaderMachO::doModInitFunctions存在于dyld库, 于是我们回到

    1K10编辑于 2022-01-14
  • 来自专栏哈雷彗星撞地球

    Objective-C 中如何测量代码的效率背景

    dispatch_benchmark dispatch_benchmark 是 libdispatch(Grand Central Dispatch) 的一部分。 dispatch_benchmark 来自 libdispatch(G C D)库,而Foundation框架已包含了libdispatch库。 2、参考时间不同。

    4.1K50发布于 2018-08-22
  • 来自专栏我只不过是出来写写iOS

    WKWebView崩溃记录——SIGSEGV(11)

    withDelegateAsyncEPKcU13block_pointerFvP16_CFURLConnectionPK33CFURLConnectionClientCurrent_VMaxE_block_invoke_2 + 108 6 libdispatch.dylib __dispatch_client_callout + 16 7 libdispatch.dylib __dispatch_block_invoke_direct$VARIANT$armv81 + 216

    3.4K40发布于 2019-06-20
  • 来自专栏iOS逆向与安全

    iOS runloop 的基本使用 、构成及应用案例(基于CFRunLoopDoSources0自定义Operation)

    _block_invoke_2((null)=<unavailable>) at KNSocketManagerTool.m:161 frame #2: 0x0000000106a09218 libdispatch.dylib `_dispatch_client_callout + 16 frame #3: 0x0000000106a15334 libdispatch.dylib`_dispatch_continuation_pop + 708 frame #4: 0x0000000106a23f94 libdispatch.dylib`_dispatch_source_latch_and_call + 204 frame #5: 0x0000000106a0b300 libdispatch.dylib`_dispatch_source_invoke + 836 frame #6: 0x0000000106a0e05c libdispatch.dylib`_dispatch_main_queue_callback_4CF + 652 frame #7: 0x000000018bc8a810 CoreFoundation

    1.3K20发布于 2021-03-24
  • 来自专栏小黑娃Henry

    OC底层探索22-GCD(上)OC底层探索22-GCD(上)define DISPATCH_QUEUE_WIDTH_FULL 0x1000ulldefine DISPATCH_QUEU

    1、libDispatch源码下载 在项目中增加一个符号断点:dispatch_queue_create;(还可以是其他的GCD-API即可); ? 可以看到GCD属于libDispatch这个库; libDispatch源码下载 2、mainQueue 主队列 // 重点注释翻译: // 主队列是用来在应用程序上下文中进行交互的主线程和主runloop dq_atomic_flags=1代表串行队列; 2.1 mianQueue创建 - libdispatch_init 通过注释翻译我们知道,mian_queue是main函数之前就已经被系统调用了; libdispatch_init(void) { // 方便观察只放出mianQueue有关的源码 #if HAVE_PTHREAD_WORKQUEUE_QOS // _dispatch_main_q dispatch_queue_set_current(&_dispatch_main_q); _dispatch_queue_set_bound_thread(&_dispatch_main_q); } libdispatch_init

    66910发布于 2021-08-09
  • 来自专栏小黑娃Henry

    OC底层探索16 -应用程序加载OC底层探索16 -应用程序加载

    libSystem-init 不但完成自己的初始化,还调起了dyld、pthread、libdisPatch等库 libSystem库是第一个初始化的库 4.2 libdispatchlibdispatch 着重分析了dyld通过9个步骤完成了APP的启动;期间对第八步initializeMainExecutable做了详细的分析;也分析了类的load方法是在dyld的完成调用的;同时也对libSystem、libDispatch

    64620发布于 2021-08-09
  • 来自专栏iOS技术

    记 libAccessibility 通知 Crash 排查

    12 libAccessibility.dylib 0x00000001a9e21ea8 ____axsHandlePrefChanged_block_invoke + 132 13 libdispatch.dylib 0x00000001a5e06e6c __dispatch_call_block_and_release + 32 14 libdispatch.dylib 0x00000001a5e08a30 __dispatch_client_callout + 20 15 libdispatch.dylib 0x00000001a5e16f48 __dispatch_main_queue_drain + 928 16 libdispatch.dylib 0x00000001a5e16b98 __dispatch_main_queue_callback

    81220编辑于 2022-12-10
  • 来自专栏Android码农

    30天从零接手ios开发

    AFURLSessionManagerTaskDelegate URLSession:task:didCompleteWithError:]_block_invoke_2.108 + 189 23 libdispatch.dylib 0x0000000111a80d18 _dispatch_call_block_and_release + 12 24 libdispatch.dylib 0x0000000111a81f5b _dispatch_client_callout + 8 25 libdispatch.dylib 0x0000000111a92e5c _dispatch_main_queue_drain + 1726 26 libdispatch.dylib 0x0000000111a92790

    66540编辑于 2023-10-27
  • 来自专栏iOS小生活

    GCD原理探究(一)——创建队列

    GCD中队列创建的源码分析 在应用程序的加载——dyld动态链接器的工作流程中,我们知道在应用程序加载的时候会依次进行libsystem、libdispatch和libobjc的初始化。 在前面的文章中,我们已经将libobjc这个库讲完了,接下来我们就来看libdispatch库的源码。 GCD的源码就是在libdispatch库里面。当然这是开天眼了,那么我们怎么去研究呢? 之后就可以看到,是在libdispatch.dylib库中了: ? 接下来我们就去获取libdispatch.dylib库的源码,然后开始分析。

    90630发布于 2021-03-25
  • 来自专栏冰霜之地

    Realm数据库 从入门到“放弃”

    0x00000001180ef980 _dispatch_call_block_and_release + 12** ** 7 libdispatch.dylib 0x00000001180f8366 _dispatch_queue_override_invoke + 1426** ** 9 libdispatch.dylib 0x0000000116819980 _dispatch_call_block_and_release + 12** ** 8 libdispatch.dylib 0x0000000116822366 _dispatch_queue_override_invoke + 1426** ** 10 libdispatch.dylib 0x0000000118b63980 _dispatch_call_block_and_release + 12** ** 10 libdispatch.dylib

    5.8K20发布于 2018-08-30
  • 来自专栏戴铭的博客

    深入剖析 iOS 性能优化

    _dispatch_mgr_invoke + 251 2 libdispatch.dylib 0x00007fff8be05465 _dispatch_mgr_thread + 52 0x07fff8fcfd323 _dispatch_call_block_and_release 8 libdispatch.dylib 0x07fff8fcf8c13 _dispatch_client_callout + 8 9 libdispatch.dylib 0x07fff8fcfc365 _dispatch_queue_drain + 1100 10 libdispatch.dylib 0x07fff8fcfdecc _dispatch_queue_invoke + 202 11 libdispatch.dylib 0x00007fff935d6c13 _dispatch_client_callout + 8 17 libdispatch.dylib 0x00007fff935e2cbf

    1.9K20发布于 2020-06-16
  • 来自专栏MelonTeam专栏

    RunLoop解读

    关于GCD 当调用 dispatch_async(dispatch_get_main_queue(), block) 时,libDispatch 会向主线程的 RunLoop 发送消息,RunLoop会被唤醒 runloop只处理主线程的block,dispatch 到其他线程仍然是由 libDispatch 处理的。 从上面的流程图中看到,runloop一次循环中有两个地方有机会处理dispatch_main:如果唤醒runloop 的不是libDispatch发送的消息,那么在下次休眠前,还有一次机会判断当前是否有

    1.3K70发布于 2018-01-04
  • 来自专栏iOS逆向与安全

    iOS小技能:NSLog调试技巧

    dispatch_benchmark 可能会导致 app 被 App Store 拒绝, https://opensource.apple.com/source/libdispatch/libdispatch

    1.1K40编辑于 2022-08-22
  • 来自专栏iOS逆向与安全

    iOS小技能:分析dyld的信息

    Library/Frameworks/Security.framework/Security (offset 24) name /usr/lib/libSystem.B.dylib (offset 24) libdispatch libcopyfile.dylib dyld: loaded: /usr/lib/system/libcorecrypto.dylib dyld: loaded: /usr/lib/system/libdispatch.dylib

    78820编辑于 2022-08-22
  • 来自专栏iOS开发攻城狮的集散地

    iOS 程序 main函数之前发生什么

    - libdispatch(GCD) - libsystem_c(C语言库) - libsystem_blocks(Block) - libCommonCrypto(加密库,比如常用的md5) 这些lib initializer function比较特殊,因为runtime初始化就在这一阶段,而这个方法其实和简单,我们可以在这里看到init.c源码,主要方法如下: libSystem_initializer.png 其中libdispatch_init _objc_init.png 运行程序,然后断点命中,我们来看下调用栈: objc_init调用栈.png 我们可以看到_objc_init调用顺序,先libSystem_initializer调用libdispatch_init

    1.1K10编辑于 2022-05-13
  • 来自专栏CoderStar

    iOS 多线程-GCD

    同时更多细节大家可以看苹果开源出来关于 GCD 的源码--swift-corelibs-libdispatch[1],同时我们通过源码也能了解到 GCD 的底层 API 都是用C写的。 参考资料 DispatchQueueTest[6] 参考资料 [1]swift-corelibs-libdispatch: https://github.com/apple/swift-corelibs-libdispatch /master/Sources/Utility/CallbackQueue.swift [5]Queue.swift: https://github.com/apple/swift-corelibs-libdispatch

    1.2K30编辑于 2022-09-23
  • 来自专栏HelloCode开发者学习平台

    objc4-750编译

    进入苹果开源网站,下载依赖的开源项目: Libc-825.40.1.tar.gz dyld-551.3.tar.gz libauto-187.tar.gz libclosure-73.tar.gz libdispatch /libdispatch-1008.220.2/src/BlocksRuntime/Block_private.h 14.

    70320编辑于 2023-03-23
领券