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++符号清洗
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。