DWARF 是一种调试信息格式。 Xcode 生成的 .dSYM 文件包含 DWARF 调试信息。
问题是:如何解码 .dSYM 文件以获取人类可读的 DWARF 信息,如下所示。
最佳答案
在 Mac OS X 上,您可以使用 dwarfdump
实用程序将 DWARF 转储到 .o 文件或 .dSYM 包中。
% dwarfdump fig7.o
----------------------------------------------------------------------
File: fig7.o (x86_64)
----------------------------------------------------------------------
.debug_info contents:
0x00000000: Compile Unit: length = 0x00000077 version = 0x0002 abbr_offset = 0x00000000 addr_size = 0x08 (next CU at 0x0000007b)
0x0000000b: TAG_compile_unit [1] *
AT_producer( "Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)" )
AT_language( DW_LANG_C99 )
AT_name( "fig7.c" )
AT_low_pc( 0x0000000000000000 )
AT_stmt_list( 0x00000000 )
AT_comp_dir( "/tmp" )
0x00000026: TAG_base_type [2]
AT_name( "int" )
AT_encoding( DW_ATE_signed )
AT_byte_size( 0x04 )
0x0000002d: TAG_variable [3]
AT_name( "a" )
AT_type( {0x00000026} ( int ) )
AT_external( 0x01 )
AT_decl_file( "/private/tmp/fig7.c" )
AT_decl_line( 1 )
AT_location( [0x0000000000000000] )
0x00000043: TAG_subprogram [4] *
AT_name( "foo" )
AT_decl_file( "/private/tmp/fig7.c" )
AT_decl_line( 2 )
AT_external( 0x01 )
AT_low_pc( 0x0000000000000000 )
AT_high_pc( 0x0000000000000006 )
AT_frame_base( rbp )
0x0000005d: TAG_variable [5]
AT_name( "b" )
AT_decl_file( "/private/tmp/fig7.c" )
AT_decl_line( 4 )
AT_type( {0x00000026} ( int ) )
AT_location( fbreg -4 )
0x0000006b: TAG_variable [5]
AT_name( "c" )
AT_decl_file( "/private/tmp/fig7.c" )
AT_decl_line( 5 )
AT_type( {0x00000026} ( int ) )
AT_location( fbreg -8 )
0x00000079: NULL
0x0000007a: NULL