<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>debugging a build process - what works for you?</title><link>http://blogs.msdn.com/jeffcal/archive/2004/09/02/225023.aspx</link><description>building a large piece of software can take a very long time. combine the times to compile and link with syncing sources, running test suites and unit tests, mailing a build report, copying the bins over the network, etc. and you have a process that can</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: debugging a build process - what works for you?</title><link>http://blogs.msdn.com/jeffcal/archive/2004/09/02/225023.aspx#225030</link><pubDate>Fri, 03 Sep 2004 01:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:225030</guid><dc:creator>Scott Sargent</dc:creator><description>Well, we're a small team but we build a diverse mix of software that all in all spans probably about 50K SLOC.  That's vb (6.0, com objects &amp;amp; exes), asp pages, crystal reports, C++ Dlls and a slew of database updates.  We've never really built an automated build system (although I've wanted to for quite a while).  We use a series of batch scripts to build everything.  With some simple options you can tell the batch script whether to get the latest from source control, or to use the source on the current hdd.  We also let the builder choose which components to rebuild and which not to, this ultimately is how we debug what goes wrong as you're not constantly rebuilding everything and it simplifies the process.  Its unfortunately a pretty manual process.&lt;br&gt;&lt;br&gt;Scott</description></item><item><title>re: debugging a build process - what works for you?</title><link>http://blogs.msdn.com/jeffcal/archive/2004/09/02/225023.aspx#225200</link><pubDate>Fri, 03 Sep 2004 12:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:225200</guid><dc:creator>Steve Loughran</dc:creator><description>ooh, that is an interesting question. Let's stop before deploying to make&lt;br&gt;it tractable. &lt;br&gt;&lt;br&gt;A build process should be simple enough to be&lt;br&gt;comprehensible and manageable. Admittedly, what we have in smartfrog.org is&lt;br&gt;pushing the limit there, which is a sign that ant1.6's import task makes&lt;br&gt;things tricky.  &lt;br&gt;&lt;br&gt;1. builds create output, be they messages or tangible artifacts in the file system.&lt;br&gt;&lt;br&gt;2. these can be tested. Assertions in the build process can probe for&lt;br&gt;things existing&lt;br&gt;&lt;br&gt;3. you can also make assertions that stuff is there before you proceed. &lt;br&gt;&lt;br&gt;&amp;lt;pre&amp;gt;&lt;br&gt;  &amp;amp;lt;target name=&amp;quot;assert-smartfrog&amp;quot;  depends=&amp;quot;init-common&amp;quot;&lt;br&gt;    description=&amp;quot;verify smartfrog is present, fail if not&amp;quot;&amp;amp;gt;&lt;br&gt;    &amp;amp;lt;available &lt;br&gt;      classname=&amp;quot;org.smartfrog.SFSystem&amp;quot; &lt;br&gt;      classpathref=&amp;quot;smartfrog.classpath&amp;quot; &lt;br&gt;      property=&amp;quot;sfSystem.present&amp;quot;/&amp;amp;gt;&lt;br&gt;    &amp;amp;lt;property name=&amp;quot;sfjars.fullpath&amp;quot; refid=&amp;quot;smartfrog.classpath&amp;quot;/&amp;amp;gt;&lt;br&gt;    &amp;amp;lt;fail unless=&amp;quot;sfSystem.present&amp;quot;&amp;amp;gt;&lt;br&gt;      Smartfrog entry point not found in &lt;br&gt;      ${sfjars.fullpath}&lt;br&gt;    &amp;amp;lt;/fail&amp;amp;gt;&lt;br&gt;    &amp;amp;lt;echo level=&amp;quot;verbose&amp;quot;&amp;amp;gt;Smartfrog found in ${smartfrog.dist.lib.dir}&amp;amp;lt;/echo&amp;amp;gt;&lt;br&gt;  &amp;amp;lt;/target&amp;amp;gt;&lt;br&gt;&amp;lt;/pre&amp;gt;  &lt;br&gt;&lt;br&gt;Here we also put something else out on the log for extra diags. So when&lt;br&gt;someone wants to find out what is going on they run ant -verbose, but&lt;br&gt;when it doesn't&lt;br&gt;&lt;br&gt;One thing people have in make that ant doesnt replicate is the make -n&lt;br&gt;command, the dry run. Ant doesnt do it as dependency logic is not in the&lt;br&gt;runtime but in the tasks. If msbuild has sole ownership of the&lt;br&gt;dependencies and knows exactly which files will be created, then it&lt;br&gt;could replicate the -n behavior, which we sometimes get asked for. &lt;br&gt;&lt;br&gt;The other technique is to do a clean build. That stops you worrying&lt;br&gt;about any dependency problems, and get on with creating stuff cleanly.&lt;br&gt;It also avoids the subtle problem of non-build artifacts getting into&lt;br&gt;the output tree, so nothing is replicable.&lt;br&gt;&lt;br&gt;Finally, IntelliJ idea 4.5 does a great job of highlighting live syntax errors in a&lt;br&gt;build, offers basic refactoring, etc. That build files need refactoring&lt;br&gt;scares me, but IJ4.5 make it possible.&lt;br&gt;&lt;br&gt;-Steve Loughran, Ant development team.&lt;br&gt;&lt;br&gt;ps, hours? builds dont take hours. we are not talking C++ here :)&lt;br&gt;&lt;br&gt;</description></item><item><title>re: debugging a build process - what works for you?</title><link>http://blogs.msdn.com/jeffcal/archive/2004/09/02/225023.aspx#225240</link><pubDate>Fri, 03 Sep 2004 14:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:225240</guid><dc:creator>David Levine</dc:creator><description>Our process only takes about 1/2 hour, but it includes all the steps you mentioned and a number of others as well. &lt;br&gt;&lt;br&gt;The basic information we need is typically the step the build process was in, what file(s) it was operating on, and the cause of the failure. The build program captures standard output and standard error, so as much info as possible is presented to aid in trouble-shooting. &lt;br&gt;&lt;br&gt;&lt;br&gt;Currently the build process stops where it failed. All the information is there as to what it was doing at the instant of the failure and the step it was in. It also can rollback certain changes (such as auto-incrementing the assembly version in a shared AssemblyInfo.cs file).&lt;br&gt;&lt;br&gt;</description></item><item><title>re: debugging a build process - what works for you?</title><link>http://blogs.msdn.com/jeffcal/archive/2004/09/02/225023.aspx#225453</link><pubDate>Fri, 03 Sep 2004 21:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:225453</guid><dc:creator>Jeff Atwood</dc:creator><description>Our build process is the &amp;quot;F5&amp;quot; key.&lt;br&gt;&lt;br&gt;Sometimes I accidentally hit SHIFT+F5 though. Doh!</description></item><item><title>debugging a build process - what works for you?</title><link>http://blogs.msdn.com/jeffcal/archive/2004/09/02/225023.aspx#6533342</link><pubDate>Mon, 26 Nov 2007 22:05:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6533342</guid><dc:creator>debugging a build process - what works for you?</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://feeds.maxblog.eu/item_213578.html"&gt;http://feeds.maxblog.eu/item_213578.html&lt;/a&gt;&lt;/p&gt;
</description></item><item><title> jeffcal s blogland debugging a build process what works for you | storage bench</title><link>http://blogs.msdn.com/jeffcal/archive/2004/09/02/225023.aspx#9749761</link><pubDate>Sun, 14 Jun 2009 13:25:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9749761</guid><dc:creator> jeffcal s blogland debugging a build process what works for you | storage bench</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://thestoragebench.info/story.php?id=1180"&gt;http://thestoragebench.info/story.php?id=1180&lt;/a&gt;&lt;/p&gt;
</description></item></channel></rss>