Changes between Version 5 and Version 6 of MacBacktrace
- Timestamp:
- Mar 25, 2008, 5:57:35 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
MacBacktrace
v5 v6 14 14 [[PageOutline(2-10,,inline)]] 15 15 16 == Replace the stripped executable with the unstripped version and run again == #replace16 == Replace the stripped executable with the unstripped version and run again == 17 17 18 18 Replace the stripped executable with the unstripped one for the correct architecture, and run it again to reproduce the crash with full symbols. … … 22 22 The BOINC Manager's executable is inside its bundle. 23 23 You can replace the 32-bit Intel manager on the command line thus: 24 24 25 {{{ 25 26 sudo cp [path]/BOINCManager_i386 /Applications/BOINCManager.app/Contents/MacOS/BOINCManager … … 33 34 -r-xr-sr-x 1 boinc_master boinc_master 9197816 Mar 12 03:04 BOINCManager 34 35 }}} 35 36 36 Note that you must rename the unstripped executable to have the same file name as the original. 37 37 38 NOTE: This will work for all Mac BOINC versions _except_6.1.10 (which saved the symbols in a separate .dSYM file.)38 NOTE: This will work for all Mac BOINC versions '''except''' 6.1.10 (which saved the symbols in a separate .dSYM file.) 39 39 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 == 41 42 42 43 Use the atos command-line utility to convert the hex address in the crash backtrace to its symbol. … … 44 45 This will work for project applications as well as the BOINC Manager and Client, but not for separate .dSYM files: 45 46 46 For example, to find a symbol in BOINC Manager version 5.10.45, at the command line in the Terminal application, first enter: 47 For example, to find a symbol in BOINC Manager version 5.10.45, at the command line in the Terminal application, first enter: 47 48 {{{ 48 atos -o [path]/boinc_5.10.45_macOSX_SymbolTables/SymbolTables/BOINCManager_i38649 atos -o ''path''/boinc_5.10.45_macOSX_SymbolTables/SymbolTables/BOINCManager_i386 49 50 }}} 50 51 then enter any number of hex values separated by spaces or carriage returns. For example, entering the following: … … 52 53 0x0009dc57 0x0009de45 0x000151f1 0x0007210a 53 54 }}} 54 will give the following output:55 will produce the following output: 55 56 {{{ 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) 60 61 }}} 61 62 62 == Use the GDB debugger to convert hex addresses to symbols == #gdb 63 64 == Use the GDB debugger to convert hex addresses to symbols == 63 65 64 66 Use 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: … … 71 73 {{{ 72 74 gdb 73 symbol [path to .dSYM file]75 symbol [path to .dSYM file] 74 76 }}} 75 77 … … 82 84 For example, again examining BOINC Manager version 5.10.45: 83 85 {{{ 84 gdb [path]/boinc_5.10.45_macOSX_SymbolTables/SymbolTables/BOINCManager_i38685 info line *0x0007210a86 gdb [path]/boinc_5.10.45_macOSX_SymbolTables/SymbolTables/BOINCManager_i386 87 info line *0x0007210a 86 88 }}} 87 89 produces the following output: 88 90 {{{ 89 Line 104 of "/Volumes/Sage/BOINC_Mac/boinc_5_10_45_tag/mac_build/../clientgui/90 sg_ProgressBar.cpp" starts at address 0x7210291 <__MIG_check__Reply__io_service_close_t+29> and ends at 0x7210c92 <__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>. 93 95 }}} 94 96 95 This method is described at: http://developer.apple.com/technotes/tn2004/tn2123.html#LISTPOSDEP96 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".)97 This method is described at: [http://developer.apple.com/technotes/tn2004/tn2123.html#LISTPOSDEP] 98 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".) 97 99 98 100 Notes: 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.