Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

Tree [dd6618] master /
History



File Date Author Commit
ApplicationIcons.graffle 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
English.lproj 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
StackTraceExamples 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
dSymbolizer.xcodeproj 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
dsymtest 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
testData 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
.DS_Store 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
AppController.h 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
AppController.m 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
ApplicationIcon.tiff 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
BacktraceTextView.h 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
BacktraceTextView.m 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
Info.plist 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
README.rtf 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
SymbolExtractor.h 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
SymbolExtractor.m 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
dSYM.icns 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
dSYMIcon.tiff 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
dSymbolizer.icns 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
dSymbolizer_Prefix.pch 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
license.txt 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
main.m 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
testfile.txt 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit
testresult.txt 2010-06-19 Your Name Comes Here Your Name Comes Here [dd6618] Initial commit

Read Me

{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320
{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 Monaco;\f2\fnil\fcharset0 Geneva;
}
{\colortbl;\red255\green255\blue255;}
\vieww11120\viewh18640\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural

\f0\b\fs24 \cf0 Introduction\

\b0 \
Do you want to be able to ship stripped executables but still receive usable backtraces? \
\
Then dSymbolizer is for you.\
\

\b Background\

\b0 \
Recent releases of Xcode supports a new debug symbol format called DWARF. \
\
One especially useful feature, is the ability to generate a symbol file that is separated from the application proper. \
This allows you to ship a stripped version of your application but still being able to decode the backtrace by using that symbol file (it is called a dSYM file).\
\
The problem is that the current toolsets doesn't make it very easy to do this (essentially, only gdb supports DWARF/dSYM at this point).\
\

\b Howto\

\b0 Make sure you generate a dSYM file as part of your release builds (this is not recommended during normal development as it takes some time).\
Make sure you save all your release applications together with the dSYM file in a separate directory for future use with dSymbolizer when you get backtraces from customers. dSymbolizer needs both the application and the dSYM file to do the decoding (gdb is being used behind the scenes for the decode process) - it is important that they are from the same exact build. The usage of gdb for the decoding stage can take some time, so be patient.\
\
Anyone can then decode the backtrace (developer, support, ...) by simply following the 1-2-3 order of the GUI.\
\
Please refer to the Xcode release notes / documentation on how to set up your project to generate .dSYM files.\
\

\b Tips\

\b0 \
dSymbolizer allows you to double-click on a .dSYM file to select it as the current dSYM/application to decode for (useful if you need to be able to switch between multiple versions easily).\
\
You can drag & drop files on top of the text view and it will read the data from that file. This allows you to avoid having to cut & paste the backtrace into the view.\
\

\b Results\

\b0 \
dSymbolizer turns backtraces that look like this:\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural

\f1\fs20 \cf0 ----------\
49  se.softedge.dsymtest 	0x00001c51 start + 345\
50  se.softedge.dsymtest 	0x00001c51 start + 345\
51  se.softedge.dsymtest 	0x00001c7a start + 386\
52  se.softedge.dsymtest 	0x00001c96 start + 414\
53  se.softedge.dsymtest 	0x00001cb2 start + 442\
54  se.softedge.dsymtest 	0x00001cce start + 470\
55  se.softedge.dsymtest 	0x00001e7d start + 901\
56  com.apple.AppKit     	0x93490ea0 -[NSApplication sendAction:to:from:] + 107\
57  com.apple.AppKit     	0x9353ec1b -[NSMenu performActionForItemAtIndex:] + 455\
58  com.apple.AppKit     	0x9353e95d -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] + 103\
59  com.apple.AppKit     	0x9353e5b4 -[NSMenu performKeyEquivalent:] + 766\
60  com.apple.AppKit     	0x9353e055 -[NSApplication _handleKeyEquivalent:] + 381\
61  com.apple.AppKit     	0x93471f5b -[NSApplication sendEvent:] + 3542\
62  com.apple.AppKit     	0x9339d106 -[NSApplication run] + 547\
63  com.apple.AppKit     	0x93391037 NSApplicationMain + 573\
64  se.softedge.dsymtest 	0x00001c2e start + 310\
65  se.softedge.dsymtest 	0x00001bfa start + 258\
66  se.softedge.dsymtest 	0x00001b21 start + 41\
----------\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural

\f0\fs24 \cf0 \
into backtraces looking like this:\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural

\f1\fs20 \cf0 \
----------\
49  se.softedge.dsymtest 	0x00001c51 funstuff + 33\
50  se.softedge.dsymtest 	0x00001c51 funstuff + 33\
51  se.softedge.dsymtest 	0x00001c7a -[AppController crashMe4] + 18\
52  se.softedge.dsymtest 	0x00001c96 -[AppController crashMe3] + 26\
53  se.softedge.dsymtest 	0x00001cb2 -[AppController crashMe2] + 26\
54  se.softedge.dsymtest 	0x00001cce -[AppController crashMe] + 26\
55  se.softedge.dsymtest 	0x00001e7d -[AppController doStuff:] + 227\
56  com.apple.AppKit     	0x93490ea0 -[NSApplication sendAction:to:from:] + 107\
57  com.apple.AppKit     	0x9353ec1b -[NSMenu performActionForItemAtIndex:] + 455\
58  com.apple.AppKit     	0x9353e95d -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] + 103\
59  com.apple.AppKit     	0x9353e5b4 -[NSMenu performKeyEquivalent:] + 766\
60  com.apple.AppKit     	0x9353e055 -[NSApplication _handleKeyEquivalent:] + 381\
61  com.apple.AppKit     	0x93471f5b -[NSApplication sendEvent:] + 3542\
62  com.apple.AppKit     	0x9339d106 -[NSApplication run] + 547\
63  com.apple.AppKit     	0x93391037 NSApplicationMain + 573\
64  se.softedge.dsymtest 	0x00001c2e main + 24\
65  se.softedge.dsymtest 	0x00001bfa _start + 216\
66  se.softedge.dsymtest 	0x00001b21 start + 41\
----------\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural

\f0\b\fs24 \cf0 License\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural

\b0 \cf0 dSymbolizer is free for individual use, but may not be redistributed without permission from the author.\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural

\b \cf0 Future directions\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural

\b0 \cf0 - Validate that the dSYM and application wrapper really are compatible by using the DWARF/.dSYM UUID (requires radar 
\f2\fs20 4677614
\f0\fs24  that requests a mechanism to extract the UUID from the application wrapper
\f2\fs20 )
\f0\fs24 \
- Automatically locate the correct dSYM and application wrapper by using spotlight DWARF/.dSYM UUID (requires radar 
\f2\fs20 4677618 
\f0\fs24 that requests the UUID to be added to the standard backtrace output
\f2\fs20 ). 
\f0\fs24 This would potentially eliminate the need for step 2 and 3 in the GUI.\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural

\b \cf0 History\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural

\b0 \cf0 August 2006		dSymbolizer 1.0 released, initial version.\
May 2007			dSymbolizer 1.0.4 released, bug fix for hang bug (thanks to Graham Westlake @ Sibelius Software for a reproducible case).\
January 2008		dSymbolizer 1.0.5 released, support Leopard.\
June 2010		dSymbolizer released as open source at sourceforge.\
\
}