<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<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>
	<lastBuildDate>Wed, 17 Mar 2010 22:33:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Peter Adler</title>
		<link>http://www.red-sweater.com/blog/439/crappy-crash-logs/comment-page-1#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&#039;re absolutely correct, of course - the crash info doesn&#039;t get sent to Apple without the user&#039;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 &#8211; 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-page-1#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&#039;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-page-1#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&#039;t sent to Apple by default.  No logs come in at all unless the user clicks &quot;Send to Apple&quot;.  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-page-1#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&#039;s true that Apple doesn&#039;t share any of that information with developers, and it&#039;s a real sore spot for lots of folks. As far as the difficulty of &quot;hooking in&quot; ourselves, it&#039;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 &quot;send the report in automatically&quot; 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-page-1#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&#039;s always seemed strange to me (as a non-programmer) is that while the crashlog is sent to Apple by default, it *isn&#039;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&#039;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&#039;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 &#8211; 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-page-1#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-page-1#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-page-1#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 &lt;&gt;, and the live preview didn&#039;t show that.
0x1000 -     0x1ffe +a.out ??? (???) &lt;55280d01e709b47f244ffb9e56dc360d&gt; /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 &#8211;     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-page-1#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&#039;re using DWARF, there&#039;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&#039;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 &#8211;     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-page-1#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&#039;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&#039;d have to check to see if that leaves any unwanted symbols in the main executable.

I&#039;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>
