Changes between Version 1 and Version 2 of MacBacktrace


Ignore:
Timestamp:
Mar 25, 2008, 5:42:07 PM (16 years ago)
Author:
charlief
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MacBacktrace

    v1 v2  
    11
    2 ==Interpreting BOINC Crash Backtraces on the Mac==
     2= Interpreting BOINC Crash Backtraces on the Mac =
     3''Last updated 3/25/08'''
    34
    4 BOINC Manager, BOINC CLient, and the BOINC library libboinc.a all generate debugging information in their respective stderr.txt files in the event of a crash, including a backtrace.  When running on Mac OS 10.3 or OS 10.4, the backtrace is generated correctly for all versions of BOINC and its library since 5.10.3.  However, BOINC versions earlier than 6.1.11 do not correctly dump a backtrace under Mac OS 10.5.
     5BOINC Manager, BOINC Client, and the BOINC library libboinc.a all generate debugging information in their respective stderr.txt files in the event of a crash, including a backtrace.  When running on Mac OS 10.3 or OS 10.4, the backtrace is generated correctly for all versions of BOINC and its library since 5.10.3.  However, BOINC versions earlier than 6.1.11 do not correctly dump a backtrace under Mac OS 10.5.
    56
    67Executables released for general distribution usually have had most of their symbols stripped, so the backtrace generated when there is a crash in the field will typically only have hex addresses with few if any symbols.
    78
    8 Whenever we release BOINC for the Mac, we archive the entire executable files with symbols for the Client and Manager before stripping the symbols for general distribution.  For BOINC version x.y.z, you can download these from:
    9 <http://boinc.berkeley.edu/dl/boinc_x.y.z_macOSX_SymbolTables.zip>
     9Whenever we release BOINC for the Mac, we archive the entire executable files with symbols for the Client and Manager before stripping the symbols for general distribution.  For BOINC version ''x.y.z'', you can download these from:
     10`<http://boinc.berkeley.edu/dl/boinc_x.y.z_macOSX_SymbolTables.zip>`
    1011
    1112If you have a crash dump without debugging symbols, there are several ways to find the associated symbols.  These same techniques can be used for project applications as well as the BOINC Manager and Client:
    12 - Replace the stripped executable with the unstripped version and run it again.
    13 - Use the atos command-line utility to convert hex addresses to symbols.
    14 - Use the GDB debugger to convert hex addresses to symbols.
    1513
    16 [Method 1]
     14[[PageOutline(1-10,,inline)]]
     15
     16== Replace the stripped executable with the unstripped version and run it again ==
     17
    1718Replace the stripped executable with the unstripped one for the correct architecture, and run it again to reproduce the crash with full symbols. 
    1819
    19 For the BOINC Manager or Client, the original stripped executable is a "universal binary" which contains the code for ppc, i386, and perhaps x86_64 architectures.  The boinc_x.y.z_macOSX_SymbolTables.zip file contains a separate unstripped executable for each single architecture for BOINC version x.y.z.)
     20For the BOINC Manager or Client, the original stripped executable is a "universal binary" which contains the code for ppc, i386, and perhaps x86_64 architectures.  The `boinc_x.y.z_macOSX_SymbolTables.zip` file contains a separate unstripped executable for each single architecture for BOINC version ''x.y.z''.)
    2021
    2122The BOINC Manager's executable is inside its bundle. 
     
    3334NOTE: This will work for all Mac BOINC versions _except_ 6.1.10 (which saved the symbols in a separate .dSYM file.)
    3435
    35 [Method 2]
     36== Use the atos command-line utility to convert hex addresses to symbols ==
     37
    3638Use the atos command-line utility to convert the hex address in the crash backtrace to its symbol. 
    3739
     
    4850   CProgressBar::UpdateValue(double) (in BOINCManager_i386) (sg_ProgressBar.cpp:104)
    4951
    50 [Method 3]
     52== Use the GDB debugger to convert hex addresses to symbols ==
     53
    5154Use gdb to convert the hex address in the crash backtrace to its symbol.  This will work for project applications as well as the BOINC Manager and Client, including separate .dSYM files:
    5255
     
    7073   <__MIG_check__Reply__io_service_close_t+39>.
    7174
    72 This method is described at:
    73    <http://developer.apple.com/technotes/tn2004/tn2123.html#LISTPOSDEP>
    74 There is also much useful information on the subject at:
    75    <http://developer.apple.com/tools/xcode/symbolizingcrashdumps.html>
    76 (scroll down to the section "Symbolizing Crash Dumps".)
     75This method is described at: http://developer.apple.com/technotes/tn2004/tn2123.html#LISTPOSDEP
     76There is also much useful information on the subject at: http://developer.apple.com/tools/xcode/symbolizingcrashdumps.html (scroll down to the section "Symbolizing Crash Dumps".)
    7777
    7878Notes: this web page says that the atos utility properly handles separate .dSYM files if you use the version of atos the which ships with XCODE Tools version 3.0.  Unfortunately, this is not true.  Also, these pages are focused on the crash reports automatically generated by the Mac OS, which are a bit different from the ones generated by BOINC.