美文网首页
在swfit语言堆栈中的globalinit_33_XXXXXX

在swfit语言堆栈中的globalinit_33_XXXXXX

作者: 差不多303 | 来源:发表于2020-01-03 16:10 被阅读0次

    背景

    在处理线上崩溃问题时经常会碰到globalinit_33_XXXXXX的堆栈,怎么通过这个堆栈定位到对应的源代码呢?通过各种百度,google没有找到任何高手的指点,于是自己写demo各种尝试,自己摸索出一套方案,在这里记录下来。由于是自己摸索的,而且没有找到理论支持,所以希望高手能在留言中不吝赐教。

    规律

    通过demo发现如下规律: image.png
    • 对static修饰的class变量(var或let),进行闭包初始化,就会自动产生一条globalinit_33_XXXXXX函数。
    • globalinit_33_XXXXXX中的比如globalinit_33_6DBB546EC00EF1AACB2B194F624F3255_func2中的6DBB546EC00EF1AACB2B194F624F3255和一个文件一一对应,只有修改了文件名称,这个值才会变化,修改了文件位置,文件中的类名称等操作都不会引起这个值变化。然后func2这部分,是按照文件中的static变量的个数从func0func1依次向下排列。

    处理

    在xcode的build日志中找到.o文件所在的位置,在相应的目录下运行

      nm *.o > /tmp/bbb
    

    然后用文本编辑器打开/tmp/bbb,查找到对应globalinit_33_XXXXXX再向上找就能找到对应的文件,然后再利用第几个函数的信息就能找到对应的源代码。

    相关文章

      网友评论

          本文标题:在swfit语言堆栈中的globalinit_33_XXXXXX

          本文链接:https://www.haomeiwen.com/subject/wsvzoctx.html