MAC上如何实现dsym动态代码映射

2022-12-12 13:59:57
标签: dsym lldb dsymutil dwarfdump--uuid dbgsourcepathremappi

  首先在原始工程中,用CMake,每创建一个target,把它记到一个文件。在编译完以后,用

conanchen@ConanChen client-delivery % dsymutil /Users/conanchen/client-delivery/Publish/Output/MAC64/Debug/Libraries/Applications/FusionDoc/NaFusionDoc10.dylib -o /Users/conanchen/client-delivery/Publish/Output/MAC64/Debug/Libraries/Applications/FusionDoc/NaFusionDoc10.dylib.dSYM 

可以直接从编译好的二进制文件里生成出.dSYM文件,当然前提得是二进制文件中记录了Symbol相关信息。

然后把dSYM拷贝到远端机器,但有个问题是dSYM里记录的路径是机器的绝对路径,所以必须做Source Map,可以用lldb命令行做。而项目用了另外的方法。

  首先,用nm -pa binary | grep "SO /"

conanchen@ConanChen client-delivery % nm -pa /Users/conanchen/client-delivery/Publish/Output/MAC64/Debug/Libraries/Applications/FusionDoc/NaFusionDoc10.dylib | grep "SO /"

0000000000000000 - 00 0000    SO /Users/conanchen/client-delivery/Publish/AdSharedMemory/

000000006396a51a - 03 0001   OSO /Users/conanchen/client-delivery/Publish/Output/MAC64/build/NaFusionDoc.build/Debug/Objects-normal/x86_64/AdSharedMemory.o

能得到源文件和.o文件的一排列表。接着,就是利用这些路径,和本地路径做个映射。把后面结尾的路径,一层层放到本地指定路径做映射看哪个存在。

然后验证一下UUID

conanchen@ConanChen client-delivery % dwarfdump --uuid /Users/conanchen/client-delivery/Publish/Output/MAC64/Debug/Libraries/Applications/FusionDoc/NaFusionDoc10.dylib 

UUID: 9EC48D57-84AD-3B83-961E-66ABDD0ED485 (x86_64) /Users/conanchen/client-delivery/Publish/Output/MAC64/Debug/Libraries/Applications/FusionDoc/NaFusionDoc10.dylib

conanchen@ConanChen client-delivery % dwarfdump --uuid /Users/conanchen/client-delivery/Publish/Output/MAC64/Debug/Libraries/Applications/FusionDoc/NaFusionDoc10.dylib.dSYM 

UUID: 9EC48D57-84AD-3B83-961E-66ABDD0ED485 (x86_64) /Users/conanchen/client-delivery/Publish/Output/MAC64/Debug/Libraries/Applications/FusionDoc/NaFusionDoc10.dylib.dSYM/Contents/Resources/DWARF/NaFusionDoc10.dylib

然后生成一个UUID.plist文件

/Users/conanchen/client-delivery/3P/FusionCoreSymbols/osx_debug_develop_2.1.11814_symbols/NaFusionTestUI10.dylib.dSYM/Contents/Resources/FAE76DD7-F2EA-31A5-80E3-0756EB232616.plist

 

阅读(0) 收藏(0) 转载(0) 举报/Report
相关阅读

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有