<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Crappy Crash Logs</title>
	<atom:link href="http://www.red-sweater.com/blog/439/crappy-crash-logs/feed" rel="self" type="application/rss+xml" />
	<link>http://www.red-sweater.com/blog/439/crappy-crash-logs</link>
	<description>Mac &#38; Technology Writings by Daniel Jalkut</description>
	<pubDate>Fri,  8 Aug 2008 01:01:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
		<item>
		<title>By: Peter Adler</title>
		<link>http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135236</link>
		<dc:creator>Peter Adler</dc:creator>
		<pubDate>Tue, 18 Dec 2007 09:20:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135236</guid>
		<description>Eric: You're absolutely correct, of course - the crash info doesn't get sent to Apple without the user's OK. Since I always send crash info on to whichever relevant party asks for it, I suppose I assume that everyone else does the same, as a matter of computing hygiene :-/</description>
		<content:encoded><![CDATA[<p>Eric: You&#8217;re absolutely correct, of course - the crash info doesn&#8217;t get sent to Apple without the user&#8217;s OK. Since I always send crash info on to whichever relevant party asks for it, I suppose I assume that everyone else does the same, as a matter of computing hygiene :-/</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Krishen</title>
		<link>http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135109</link>
		<dc:creator>Krishen</dc:creator>
		<pubDate>Tue, 11 Dec 2007 18:16:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135109</guid>
		<description>That's awesome. Thanks for the heads up on this, I foresee it being very useful.</description>
		<content:encoded><![CDATA[<p>That&#8217;s awesome. Thanks for the heads up on this, I foresee it being very useful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eric Albert</title>
		<link>http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135081</link>
		<dc:creator>Eric Albert</dc:creator>
		<pubDate>Mon, 10 Dec 2007 03:53:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135081</guid>
		<description>To be clear, the log isn't sent to Apple by default.  No logs come in at all unless the user clicks "Send to Apple".  I wonder how many people do that, and how many others just close the window and ignore it.</description>
		<content:encoded><![CDATA[<p>To be clear, the log isn&#8217;t sent to Apple by default.  No logs come in at all unless the user clicks &#8220;Send to Apple&#8221;.  I wonder how many people do that, and how many others just close the window and ignore it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Jalkut</title>
		<link>http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135073</link>
		<dc:creator>Daniel Jalkut</dc:creator>
		<pubDate>Sun, 09 Dec 2007 15:32:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135073</guid>
		<description>Peter: It's true that Apple doesn't share any of that information with developers, and it's a real sore spot for lots of folks. As far as the difficulty of "hooking in" ourselves, it's not trivial to cover all the bases and do it 100% correctly. So like most things, for most developers it becomes a lower priority than simply hacking away at new features.

For an application that has a rampant crashing problem I think some kind of "send the report in automatically" system is a good idea to try to reel in the problem.</description>
		<content:encoded><![CDATA[<p>Peter: It&#8217;s true that Apple doesn&#8217;t share any of that information with developers, and it&#8217;s a real sore spot for lots of folks. As far as the difficulty of &#8220;hooking in&#8221; ourselves, it&#8217;s not trivial to cover all the bases and do it 100% correctly. So like most things, for most developers it becomes a lower priority than simply hacking away at new features.</p>
<p>For an application that has a rampant crashing problem I think some kind of &#8220;send the report in automatically&#8221; system is a good idea to try to reel in the problem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Adler</title>
		<link>http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135069</link>
		<dc:creator>Peter Adler</dc:creator>
		<pubDate>Sun, 09 Dec 2007 09:21:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135069</guid>
		<description>What's always seemed strange to me (as a non-programmer) is that while the crashlog is sent to Apple by default, it *isn't* automatically sent to the third-party developer. For a long time, I simply assumed that the developers were informed by Apple, until Michael Tsai disabused me of that assumption in the course of a late-night troubleshooting email exchange in response to a SpamSieve crash - a crash which he was notified about without my intervention. He informed me that developers had to write their own generate-a-message hooks into Apple's logging system. Yuck. How difficult is it to do? If Apple can generate a message to itself, presumably the engine to do it is available to any programmer, yes?

Regardless of whether developers know how to interpret Apple's crashlogs or not, I would think that a developer would want to have whatever information Apple is collecting about his app and its problems...</description>
		<content:encoded><![CDATA[<p>What&#8217;s always seemed strange to me (as a non-programmer) is that while the crashlog is sent to Apple by default, it *isn&#8217;t* automatically sent to the third-party developer. For a long time, I simply assumed that the developers were informed by Apple, until Michael Tsai disabused me of that assumption in the course of a late-night troubleshooting email exchange in response to a SpamSieve crash - a crash which he was notified about without my intervention. He informed me that developers had to write their own generate-a-message hooks into Apple&#8217;s logging system. Yuck. How difficult is it to do? If Apple can generate a message to itself, presumably the engine to do it is available to any programmer, yes?</p>
<p>Regardless of whether developers know how to interpret Apple&#8217;s crashlogs or not, I would think that a developer would want to have whatever information Apple is collecting about his app and its problems&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Todd Stellanova</title>
		<link>http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135059</link>
		<dc:creator>Todd Stellanova</dc:creator>
		<pubDate>Sat, 08 Dec 2007 16:13:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135059</guid>
		<description>This is tremendously useful-- thanks for the detailed explanation of how to use this tool!</description>
		<content:encoded><![CDATA[<p>This is tremendously useful&#8211; thanks for the detailed explanation of how to use this tool!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cesar Tardaguila</title>
		<link>http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135056</link>
		<dc:creator>Cesar Tardaguila</dc:creator>
		<pubDate>Sat, 08 Dec 2007 07:03:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135056</guid>
		<description>Sure, it is a helpful post. Thanks, Daniel</description>
		<content:encoded><![CDATA[<p>Sure, it is a helpful post. Thanks, Daniel</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg Parker</title>
		<link>http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135036</link>
		<dc:creator>Greg Parker</dc:creator>
		<pubDate>Thu, 06 Dec 2007 23:51:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135036</guid>
		<description>Of course, the crash log puts the uuid in &#60;&#62;, and the live preview didn't show that.
0x1000 -     0x1ffe +a.out ??? (???) &#60;55280d01e709b47f244ffb9e56dc360d&#62; /Users/gparker/a.out</description>
		<content:encoded><![CDATA[<p>Of course, the crash log puts the uuid in &lt;&gt;, and the live preview didn&#8217;t show that.<br />
0&#215;1000 -     0&#215;1ffe +a.out ??? (???) &lt;55280d01e709b47f244ffb9e56dc360d&gt; /Users/gparker/a.out</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg Parker</title>
		<link>http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135035</link>
		<dc:creator>Greg Parker</dc:creator>
		<pubDate>Thu, 06 Dec 2007 23:49:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135035</guid>
		<description>If you're using DWARF, there's an additional bit of information to tell you which version of your app crashed.

Check the bottom of the crash log:
0x1000 -     0x1ffe +a.out ??? (???)  /Users/gparker/a.out

That random number is a UUID generated by the linker. Every time you change your code and recompile, the built binary gets a different number. Use the UUID to make sure you're reading symbols from the same version and architecture that your user was running. This works best if your build generates a fully-symboled binary that you then strip and ship, or if you build to a separate .dSYM file.

% otool -lv -arch i386 a.out
[...]
cmd LC_UUID
cmdsize 24
uuid 0x55 0x28 0x0d 0x01 0xe7 0x09 0xb4 0x7f
0x24 0x4f 0xfb 0x9e 0x56 0xdc 0x36 0x0d</description>
		<content:encoded><![CDATA[<p>If you&#8217;re using DWARF, there&#8217;s an additional bit of information to tell you which version of your app crashed.</p>
<p>Check the bottom of the crash log:<br />
0&#215;1000 -     0&#215;1ffe +a.out ??? (???)  /Users/gparker/a.out</p>
<p>That random number is a UUID generated by the linker. Every time you change your code and recompile, the built binary gets a different number. Use the UUID to make sure you&#8217;re reading symbols from the same version and architecture that your user was running. This works best if your build generates a fully-symboled binary that you then strip and ship, or if you build to a separate .dSYM file.</p>
<p>% otool -lv -arch i386 a.out<br />
[...]<br />
cmd LC_UUID<br />
cmdsize 24<br />
uuid 0&#215;55 0&#215;28 0&#215;0d 0&#215;01 0xe7 0&#215;09 0xb4 0&#215;7f<br />
0&#215;24 0&#215;4f 0xfb 0&#215;9e 0&#215;56 0xdc 0&#215;36 0&#215;0d</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Suter</title>
		<link>http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135034</link>
		<dc:creator>Chris Suter</dc:creator>
		<pubDate>Thu, 06 Dec 2007 22:44:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.red-sweater.com/blog/439/crappy-crash-logs#comment-135034</guid>
		<description>There's no need to have a separate build configuration (which is a pain to keep synchronised anyway).

We run a script at the end that copies the application at the end of the build and strips at that point.

I suspect that we could improve the process now that you have the option of using dSYM bundles with DWARF. I'd have to check to see if that leaves any unwanted symbols in the main executable.

I'd also add that we do all release builds on a build server which has the advantage of isolating potential differences in developer machines and gives us access to the exact build objects and logs for any release.</description>
		<content:encoded><![CDATA[<p>There&#8217;s no need to have a separate build configuration (which is a pain to keep synchronised anyway).</p>
<p>We run a script at the end that copies the application at the end of the build and strips at that point.</p>
<p>I suspect that we could improve the process now that you have the option of using dSYM bundles with DWARF. I&#8217;d have to check to see if that leaves any unwanted symbols in the main executable.</p>
<p>I&#8217;d also add that we do all release builds on a build server which has the advantage of isolating potential differences in developer machines and gives us access to the exact build objects and logs for any release.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.246 seconds -->
