【问题标题】:How can I have atos print mangled names?我怎样才能让 atos 打印损坏的名称?
【发布时间】:2020-07-29 16:49:42
【问题描述】:

我正在运行 atos 以使用 -arch arm64 -o MyApp -s <slide> -f <symbol file> 来表示地址。但是,它会打印像type metadata accessor for GradientView (in MyApp) (<compiler-generated>:0) 这样的行。我希望它打印损坏的名称,例如_$s22FeatureImpl12LanguageCellC19GradientViewSo012GradientI0CvpACTk。由于各种原因,我需要这个,包括传递给链接器的订单文件。有没有办法用atos 做到这一点?

【问题讨论】:

    标签: ios debug-symbols name-mangling


    【解决方案1】:

    我找到了一个没有atos 的解决方法。我可以直接使用私有的 CoreSymbolication 框架:

    #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 提供原型

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      • 2020-10-16
      • 2010-09-28
      • 2022-11-03
      相关资源
      最近更新 更多