Changes between Version 5 and Version 6 of MacBacktrace


Ignore:
Timestamp:
Mar 25, 2008, 5:57:35 PM (17 years ago)
Author:
charlief
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MacBacktrace

    v5 v6  
    1414[[PageOutline(2-10,,inline)]]
    1515
    16 == Replace the stripped executable with the unstripped version and run again == #replace
     16== Replace the stripped executable with the unstripped version and run again ==
    1717
    1818Replace the stripped executable with the unstripped one for the correct architecture, and run it again to reproduce the crash with full symbols. 
     
    2222The BOINC Manager's executable is inside its bundle. 
    2323You can replace the 32-bit Intel manager on the command line thus:
     24
    2425{{{
    2526sudo cp [path]/BOINCManager_i386 /Applications/BOINCManager.app/Contents/MacOS/BOINCManager
     
    3334-r-xr-sr-x  1 boinc_master  boinc_master  9197816 Mar 12 03:04 BOINCManager
    3435}}}
    35 
    3636Note that you must rename the unstripped executable to have the same file name as the original.
    3737
    38 NOTE: This will work for all Mac BOINC versions _except_ 6.1.10 (which saved the symbols in a separate .dSYM file.)
     38NOTE: This will work for all Mac BOINC versions '''except''' 6.1.10 (which saved the symbols in a separate .dSYM file.)
    3939
    40 == Use the atos command-line utility to convert hex addresses to symbols == #atos
     40
     41== Use the atos command-line utility to convert hex addresses to symbols ==
    4142
    4243Use the atos command-line utility to convert the hex address in the crash backtrace to its symbol. 
     
    4445This will work for project applications as well as the BOINC Manager and Client, but not for separate .dSYM files:
    4546
    46 For example, to find a symbol in BOINC Manager version 5.10.45, at the command line in the Terminal application, first enter:
     47For example, to find a symbol in BOINC Manager version 5.10.45, at the command line in the Terminal application, first enter: 
    4748{{{
    48 atos -o [path]/boinc_5.10.45_macOSX_SymbolTables/SymbolTables/BOINCManager_i386
     49atos -o ''path''/boinc_5.10.45_macOSX_SymbolTables/SymbolTables/BOINCManager_i386
    4950}}}
    5051then enter any number of hex values separated by spaces or carriage returns.  For example, entering the following:
     
    52530x0009dc57 0x0009de45 0x000151f1 0x0007210a
    5354}}}
    54 will give the following output:
     55will produce the following output:
    5556{{{
    56 QCRGetBacktraceAtIndex (in BOINCManager_i386) (QCrashReport.c:623)
    57 QCRPrintBacktraces (in BOINCManager_i386) (QCrashReport.c:756)
    58 boinc_catch_signal (in BOINCManager_i386) (diagnostics.C:554)
    59 CProgressBar::UpdateValue(double) (in BOINCManager_i386) (sg_ProgressBar.cpp:104)
     57   QCRGetBacktraceAtIndex (in BOINCManager_i386) (QCrashReport.c:623)
     58   QCRPrintBacktraces (in BOINCManager_i386) (QCrashReport.c:756)
     59   boinc_catch_signal (in BOINCManager_i386) (diagnostics.C:554)
     60   CProgressBar::UpdateValue(double) (in BOINCManager_i386) (sg_ProgressBar.cpp:104)
    6061}}}
    6162
    62 == Use the GDB debugger to convert hex addresses to symbols == #gdb
     63
     64== Use the GDB debugger to convert hex addresses to symbols ==
    6365
    6466Use 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:
     
    7173{{{
    7274gdb
    73 symbol [path to .dSYM file]
     75   symbol [path to .dSYM file]
    7476}}}
    7577
     
    8284For example, again examining BOINC Manager version 5.10.45:
    8385{{{
    84 gdb [path]/boinc_5.10.45_macOSX_SymbolTables/SymbolTables/BOINCManager_i386
    85 info line *0x0007210a
     86   gdb [path]/boinc_5.10.45_macOSX_SymbolTables/SymbolTables/BOINCManager_i386
     87   info line *0x0007210a
    8688}}}
    8789produces the following output:
    8890{{{
    89 Line 104 of "/Volumes/Sage/BOINC_Mac/boinc_5_10_45_tag/mac_build/../clientgui/
    90 sg_ProgressBar.cpp" starts at address 0x72102
    91 <__MIG_check__Reply__io_service_close_t+29> and ends at 0x7210c
    92 <__MIG_check__Reply__io_service_close_t+39>.
     91   Line 104 of "/Volumes/Sage/BOINC_Mac/boinc_5_10_45_tag/mac_build/../clientgui/
     92   sg_ProgressBar.cpp" starts at address 0x72102
     93   <__MIG_check__Reply__io_service_close_t+29> and ends at 0x7210c
     94   <__MIG_check__Reply__io_service_close_t+39>.
    9395}}}
    9496
    95 This method is described at: http://developer.apple.com/technotes/tn2004/tn2123.html#LISTPOSDEP
    96 There 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".)
     97This method is described at: [http://developer.apple.com/technotes/tn2004/tn2123.html#LISTPOSDEP]
     98There 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".)
    9799
    98100Notes: 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.