首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让atos打印损坏的名称?

如何让atos打印损坏的名称?
EN

Stack Overflow用户
提问于 2020-04-16 20:35:28
回答 1查看 44关注 0票数 1

我正在使用-arch arm64 -o MyApp -s <slide> -f <symbol file>运行atos来符号化地址。但是,它像type metadata accessor for GradientView (in MyApp) (<compiler-generated>:0)一样打印行。我想让它打印出损坏的名字,例如_$s22FeatureImpl12LanguageCellC19GradientViewSo012GradientI0CvpACTk。我需要它的原因有很多,包括传递给链接器的订单文件。有没有办法用atos做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-17 02:15:18

我发现了一个没有atos的变通方法。我可以直接使用私有CoreSymbolication框架:

代码语言:javascript
复制
#import <Foundation/Foundation.h>
#include <stdint.h>
#include <mach/machine.h>
#include <mach-o/arch.h>
#include <architecture/byte_order.h>

struct sCSTypeRef {
    void* csCppData;    // typically retrieved using CSCppSymbol...::data(csData & 0xFFFFFFF8)
    void* csCppObj;        // a pointer to the actual CSCppObject
};
typedef struct sCSTypeRef CSTypeRef;

typedef CSTypeRef CSSymbolicatorRef;
typedef CSTypeRef CSSourceInfoRef;
typedef CSTypeRef CSSymbolOwnerRef;
typedef CSTypeRef CSSectionRef;
typedef CSTypeRef CSSegmentRef;
typedef CSTypeRef CSSymbolRef;
typedef CSTypeRef CSRegionRef;
typedef CSTypeRef CSUUIDRef;

CSSymbolicatorRef CSSymbolicatorCreateWithURLAndArchitecture(CFURLRef url, cpu_type_t type);
CSSymbolRef CSSymbolicatorGetSymbolWithAddressAtTime(CSSymbolicatorRef cs, vm_address_t addr, uint64_t time);
const char* CSSymbolGetMangledName(CSSymbolRef sym);

int main(int argc, const char * argv[]) {
    CFURLRef url = CFURLCreateWithFileSystemPath(NULL, CFSTR("/path/to/dSYM/binary"), kCFURLPOSIXPathStyle, false);
    CSSymbolicatorRef cs = CSSymbolicatorCreateWithURLAndArchitecture(url, 16777228 /* arm64 cputype */);
    int slide = ...;
    ptrdiff_t addr = ...;
    CSSymbolRef sym = CSSymbolicatorGetSymbolWithAddressAtTime(cs, addr - slide, 0);
    const char *name = CSSymbolGetMangledName(sym);
    printf("%s\n", name);
    return 0;
}

https://github.com/mountainstorm/CoreSymbolication/blob/master/CoreSymbolication/CoreSymbolication.h提供了原型

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61250387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档