Swift 符号荡涤

swift在crash堆栈里的信息是蛮奇怪的,比如说这种:
_TtC16MTSS_SDKTestDemo13WXCrashTestVC
其实他这是通过Name demangle名字命名技术之后,让人看起来诡异,如何荡涤成失常的符号呢:

xcrun swift-demangle __TFV5hello4Rectg9subscriptFOS_9DirectionSi

荡涤成人眼可看的符号了

说到底swift的Name demangle是抄的c++的Name demangle技术,swift的符号命名规定详见swift符号规定

oc-Swift混编 oc调用swift类的

app名-Swift.h文件,这里会寄存着swift本义成oc的类的列表,如果在oc里须要通过runtime调用swift类,则须要调用本义之后的swift类名,如下图中的_TtC16MTSS_SDKTestDemo13WXCrashTestVC

如何寻找编译之后的app名-Swift.h文件,找到编译日志里的swiftFileList地位就行了,和这个放在同一级目录下,

C++符号荡涤

c++filt -n  _ZN5physx2Gu24PCMMeshContactGenerationC2ERKNS_6shdfnd3aos6FloatVES6_RKNS3_12PsTransformVES9_RNS0_33MultiplePersistentContactManifoldERNS0_13ContactBufferE

一般来说c++filt命令要加-n参数,能力失常解析

参考文章:c++符号荡涤