<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Narnio&#187; debugging</title>
	<atom:link href="http://www.narnio.com/tag/debugging/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.narnio.com</link>
	<description>A day in the life of a software engineer</description>
	<lastBuildDate>Sat, 04 Feb 2012 18:31:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>PHP autoloader continued</title>
		<link>http://www.narnio.com/2011/02/13/php-autoloader-continued/</link>
		<comments>http://www.narnio.com/2011/02/13/php-autoloader-continued/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 01:09:40 +0000</pubDate>
		<dc:creator>Jongerius</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.narnio.com/?p=532</guid>
		<description><![CDATA[A couple of days back I wrote something about some huge issues I had with the PHP autoloader technology. After reading up some more on the autoloader and some help from the PHP developers I finally tracked down the issue. As it turns out the autoloader functionality is called when PHP is unable to find [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of days back I wrote something about some huge issues I had with the PHP autoloader technology. After reading up some more on the autoloader and some help from the PHP developers I finally tracked down the issue.</p>
<p>As it turns out the autoloader functionality is called when PHP is unable to find the class you are using automatically itself as a last effort. Though that wasn&#39;t the issue I encountered. It took me about 3 hours of debugging the function to find out there was a problem with the logic of the autoloader function I wrote myself, doh!</p>
<p>Something with breaking out of a loop to early <img src='http://www.narnio.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> . After fixing this issue my autoloader was working beautifully. So I am happy to say that it is possible to write a modular PHP web application after all.</p>
<hr/>Copyright &copy; 2012 <strong><a  href="http://www.narnio.com">Narnio</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@jong-soft.com so we can take legal action immediately.]]></content:encoded>
			<wfw:commentRss>http://www.narnio.com/2011/02/13/php-autoloader-continued/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP autoloader issues</title>
		<link>http://www.narnio.com/2011/02/10/php-autoloader-issues/</link>
		<comments>http://www.narnio.com/2011/02/10/php-autoloader-issues/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 21:59:34 +0000</pubDate>
		<dc:creator>Jongerius</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[General Rant]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.narnio.com/?p=527</guid>
		<description><![CDATA[Since PHP 5.x we are encouraged to develop in a more object oriented way. This is why they developed class support for us . Now to make our web applications even more modular you might consider putting each class in a seperate PHP file, just like Java and C++ developers have been doing for years [...]]]></description>
			<content:encoded><![CDATA[<p>Since PHP 5.x we are encouraged to develop in a more object oriented way. This is why they developed class support for us <img src='http://www.narnio.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Now to make our web applications even more modular you might consider putting each class in a seperate PHP file, just like Java and C++ developers have been doing for years now. But here is where it becomes tricky, how does PHP know which files to load automatically.</p>
<p>Of course you could include every single file that you might need manually at the top of your index.php. But what if you don&#39;t need every single class every time a page is loaded, do you really want to create that kind of an overhead in loading un-needed files? I didn&#39;t, so I started looking into the <a  href="http://php.net/manual/en/language.oop5.autoload.php" target="_blank">autoloader </a>functionality of PHP. What this feature does is allow you to&nbsp;scan through files in the <a  href="http://php.net/manual/en/function.set-include-path.php" target="_blank">predefined include directories </a>and attempts to locate the class.</p>
<p>So what I did was build a simple autoloader function to scan each file in predefined directories to find the classes, and if found to stop. To my surprise this was working rather well. All classes that where needed would automatically get loaded by my little autoloader function. However somehow one particular class was not able to be loaded for some reason. The setup was something simple, something like:</p>
<ul>
<li>A predefined class A</li>
<li>A class B which extended class A</li>
<li>A class C which extended class B</li>
<li>A class D which extended class C, and was located in a separate directory as it was specific for the website</li>
</ul>
<p>All of the classes loaded beautifully, except for class D. For some reason when I tried using it I got exceptions that class&nbsp;C was undefined. When I added some debugging to find out which files where loaded I did see every file for classes A, B and C being loaded, but the actual classes defined inside where not added to PHP. Somehow I have magically created a black whole in PHP that would include files and then forget to create the class definitions internally. To this day I still haven&#39;t figured out why PHP refused to store the actual classes in its memory.</p>
<p>The quick fix I applied was ugly and stupid, just manually load the classes and build a big <em>if</em> statement around them to prevent duplicate declarations using the <a  href="http://php.net/manual/en/function.class-exists.php" target="_blank">class_exists </a>function.</p>
<hr/>Copyright &copy; 2012 <strong><a  href="http://www.narnio.com">Narnio</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@jong-soft.com so we can take legal action immediately.]]></content:encoded>
			<wfw:commentRss>http://www.narnio.com/2011/02/10/php-autoloader-issues/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Controlling Tomcat using Ant scripting</title>
		<link>http://www.narnio.com/2010/05/26/controlling-tomcat-using-ant-scripting/</link>
		<comments>http://www.narnio.com/2010/05/26/controlling-tomcat-using-ant-scripting/#comments</comments>
		<pubDate>Wed, 26 May 2010 16:31:34 +0000</pubDate>
		<dc:creator>Jongerius</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.narnio.com/?p=404</guid>
		<description><![CDATA[As a Java webdeveloper you are faced with a lot of different aspects of development. One is testing and debugging code, to do this you need an application server like Tomcat. One of the issues I recently encountered was the need to control various Tomcat instances with a single Ant build script. Below are some [...]]]></description>
			<content:encoded><![CDATA[<p>As a Java webdeveloper you are faced with a lot of different aspects of development. One is testing and debugging code, to do this you need an application server like Tomcat. One of the issues I recently encountered was the need to control various <a  href="http://tomcat.apache.org" target="_blank" title="Tomcat Homepage">Tomcat</a> instances with a single <a  href="http://ant.apache.org" target="_blank" title="Ant homepage">Ant</a> build script. Below are some of the solutions I&#8217;ve used to manipulate Tomcat.</p>
<p><b>Note:</b> some parts of this script rely on the <a  href="http://ant-contrib.sourceforge.net/" target="_blank" title="Ant Contrib home page">ant-contrib</a> library. Download this library and include it in the tomcat.xml with the following code:</p>
<pre class="brush: xml">
&lt;taskdef resource=&quot;net/sf/antcontrib/antcontrib.properties&quot;&gt;
 &lt;classpath&gt;
  &lt;pathelement location=&quot;./ant-contrib-1.0b3.jar&quot;/&gt;
 &lt;/classpath&gt;
&lt;/taskdef&gt;
</pre>
<h2>Starting tomcat</h2>
<p>Though starting tomcat may seem easy. You could just use the development IDE (like Netbeans) to start and stop Tomcat, but what this lacks is the ability to control several instances with easy shortcuts. So I defined the following Ant <a  href="http://ant.apache.org/manual/CoreTasks/macrodef.html" target="_blank" title="Macrodef Documentation">macrodef</a> in a file called tomcat.xml:</p>
<pre class="brush: xml">
&lt;macrodef name=&quot;tomcat-start&quot;&gt;
 &lt;sequential&gt;
   &lt;trycatch&gt;
    &lt;try&gt;
      &lt;if&gt;
       &lt;not&gt;&lt;http url=&quot;http://localhost&quot;/&gt;&lt;/not&gt;
       &lt;then&gt;
         &lt;java classname=&quot;org.apache.catalina.startup.Bootstrap&quot;
             fork=&quot;yes&quot;
             dir=&quot;${tomcat.dir}&quot;
             spawn=&quot;true&quot;
             jvm=&quot;${tomcat.java.home}/bin/java&quot;&gt;
          &lt;jvmarg value=&quot;-Dcatalina.home=${tomcat.dir}&quot;/&gt;
          &lt;jvmarg value=&quot;-Dcatalina.base=${tomcat.dir}&quot;/&gt;
          &lt;jvmarg value=&quot;-Djava.io.tmpdir=${tomcat.dir}/temp&quot;/&gt;
          &lt;jvmarg value=&quot;-Djava.endorsed.dirs=${tomcat.dir}/common/endorsed&quot;/&gt;
          &lt;jvmarg value=&quot;-Xdebug&quot;/&gt;
          &lt;jvmarg value=&quot;-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n&quot;/&gt;
          &lt;classpath&gt;
           &lt;pathelement location=&quot;${tomcat.java.home}/lib/tools.jar&quot;/&gt;
           &lt;pathelement location=&quot;${tomcat.dir}/bin/bootstrap.jar&quot;/&gt;
          &lt;/classpath&gt;

          &lt;arg line=&quot;start&quot; /&gt;
         &lt;/java&gt;

         &lt;waitfor maxwait=&quot;10&quot; maxwaitunit=&quot;second&quot; checkevery=&quot;5000&quot;&gt;
          &lt;http url=&quot;http://localhost&quot;/&gt;
         &lt;/waitfor&gt;
         &lt;echo message=&quot;Tomcat started&quot;/&gt;
       &lt;/then&gt;
       &lt;else&gt;
        &lt;echo message=&quot;Tomcat already started...&quot; /&gt;
       &lt;/else&gt;
     &lt;/if&gt;
    &lt;/try&gt;
    &lt;catch&gt;
     &lt;echo message=&quot;Unable to start tomcat&quot;/&gt;
    &lt;/catch&gt;
  &lt;/trycatch&gt;
 &lt;/sequential&gt;
&lt;/macrodef&gt;
</pre>
<p>This macro is really easy. First it starts of by checking if tomcat is not already running (well actually it just checks to see if there is something running on port 80). If nothing is running then tomcat is started using the java defined by the <a  href="http://ant.apache.org/manual/CoreTasks/property.html" title="Property Task documentation" target="_blank">ant property</a> <i>tomcat.java.home</i>. This macro also depends on some other properties that are set by a different macro, which will be a bit further on in the post. Tomcat is started by using the Bootloader class provided by the server, to make sure it loads correctly the <strong>classpath</strong> is set.</p>
<p>The last step in the macro is to wait for tomcat to start, this has to be done since we start tomcat in a seperate java instance (the <i>spawn</i> option).</p>
<h2>Stopping Tomat</h2>
<p>Off course you also want to be able to stop tomcat to load some new data, or an entire web-app. I use the following macro to stop Tomcat:</p>
<pre class="brush: xml">
&lt;macrodef name=&quot;tomcat-stop&quot;&gt;
 &lt;sequential&gt;
  &lt;trycatch&gt;
   &lt;try&gt;
    &lt;java classname=&quot;org.apache.catalina.startup.Bootstrap&quot;
         fork=&quot;yes&quot;
         dir=&quot;${tomcat.dir}&quot;
         spawn=&quot;true&quot;
         jvm=&quot;${java.home}/bin/java&quot;&gt;
     &lt;jvmarg value=&quot;-Dcatalina.home=${tomcat.dir}&quot;/&gt;
     &lt;jvmarg value=&quot;-Dcatalina.base=${tomcat.dir}&quot;/&gt;
     &lt;jvmarg value=&quot;-Djava.io.tmpdir=${tomcat.dir}/temp&quot;/&gt;
     &lt;classpath&gt;
      &lt;pathelement location=&quot;${tomcat.java.home}/lib/tools.jar&quot;/&gt;
      &lt;pathelement location=&quot;${tomcat.dir}/bin/bootstrap.jar&quot;/&gt;
     &lt;/classpath&gt;

     &lt;arg line=&quot;stop&quot; /&gt;
    &lt;/java&gt;

    &lt;kill-java name=&quot;Bootstrap&quot; /&gt;
    &lt;echo message=&quot;Tomcat stopped&quot; /&gt;
   &lt;/try&gt;
   &lt;catch&gt;
    &lt;echo message=&quot;Unable to stop tomcat forcing shutdown.....&quot;/&gt;
    &lt;kill-java name=&quot;Bootstrap&quot; /&gt;
   &lt;/catch&gt;
  &lt;/trycatch&gt;
 &lt;/sequential&gt;
&lt;/macrodef&gt;
</pre>
<p>Just like with the starting of Tomcat I use the provided Bootloader class to instruct tomcat to stop. Again I use the java that is set in <i>tomcat.java.home</i> as well as some other properties loaded by another macro. Since Tomcat sometimes fails to stop gracefully (due to poorly designed webapps) you also have to kill the Java process of Tomcat. This is done with the call to <b>kill-java</b>.</p>
<h2>Killing any java process</h2>
<p>As you saw in the <b>tomcat-stop</b> macro I used a macro called <i>kill-java</i> to make sure that Tomcat is really killed and no longer running in the background. The macro is as follows:</p>
<pre class="brush: xml">
&lt;macrodef name=&quot;kill-java&quot;
          description=&quot;Forcefully stop tomcat....&quot;&gt;
 &lt;attribute name=&quot;name&quot;/&gt;
 &lt;sequential&gt;
  &lt;!-- Execute the jps and check for any Java process with the provided @{name} attribute --&gt;
  &lt;exec executable=&quot;${tomcat.java.home}/bin/jps&quot; output=&quot;pid.out.file&quot; /&gt;
  &lt;!-- Load in the name / pid file and strip all information except the PID --&gt;
  &lt;loadfile srcfile=&quot;pid.out.file&quot; property=&quot;pid.out&quot;&gt;
   &lt;filterchain&gt;
     &lt;linecontains&gt;
      &lt;contains value=&quot;@{name}&quot;/&gt;
     &lt;/linecontains&gt;
    &lt;tokenfilter&gt;
    &lt;deletecharacters chars=&quot;@{name}&quot;/&gt;
    &lt;trim/&gt;
    &lt;ignoreblank/&gt;
    &lt;/tokenfilter&gt;
    &lt;striplinebreaks/&gt;
   &lt;/filterchain&gt;
  &lt;/loadfile&gt;
  &lt;echo message=&quot;Killing java process with pid ${pid.out}&quot;/&gt;
  &lt;!-- Kill the process, warning this only Works on Windows --&gt;
  &lt;exec spawn=&quot;true&quot; executable=&quot;taskkill&quot;&gt;
   &lt;arg line=&quot;/PID ${pid.out}&quot; /&gt;
   &lt;arg line=&quot;/F&quot; /&gt;
  &lt;/exec&gt;
  &lt;delete file=&quot;pid.out.file&quot; /&gt;
 &lt;/sequential&gt;
&lt;/macrodef&gt;
</pre>
<p>This macro is really simple and relies on the jps application provided by Java. This application returns a list of all running processes with name and process id (PID). All we need to do is get the line containing the process name provided and strip everything except the PID.</p>
<p><b>Please note:</b> the task killing the proces is designed for Windows, you could change this with kill in Linux.</p>
<h2>Rounding it up</h2>
<p>Though you now have all you need to manipulate tomcat there is one last macro that we are tegenkant upon. That is the initializer of the various Tomcat properties. I use the following macro:</p>
<pre class="brush: xml">
&lt;macrodef name=&quot;tomcat-init&quot;&gt;
 &lt;attribute name=&quot;from&quot;/&gt;
 &lt;sequential&gt;
  &lt;property name=&quot;tomcat.dir&quot; value=&quot;${tomcat.@{from}.dir}&quot;/&gt;
  &lt;property name=&quot;tomcat.server&quot; value=&quot;${tomcat.@{from}.server}&quot;/&gt;
  &lt;property name=&quot;tomcat.port&quot; value=&quot;${tomcat.@{from}.port}&quot; /&gt;
  &lt;property name=&quot;j2ee.server.type&quot; value=&quot;${tomcat.server}&quot; /&gt;
  &lt;taskdef name=&quot;webapp-stop&quot;
          classname=&quot;org.apache.catalina.ant.StopTask&quot;
          classpath=&quot;${tomcat.dir}/server/lib/catalina-ant.jar&quot;/&gt;
  &lt;taskdef name=&quot;webapp-start&quot;
           classname=&quot;org.apache.catalina.ant.StartTask&quot;
           classpath=&quot;${tomcat.dir}/server/lib/catalina-ant.jar&quot;/&gt;
 &lt;/sequential&gt;
&lt;/macrodef&gt;
</pre>
<p>This little macro will initialize tomcat for a specific environment (for exemple DEV). Of course none of this works without the loading of some preset properties in a property file <i>tomcat.properties</i>. Which contains the following data:</p>
<pre class="brush: php">
tomcat.java.home=C:/jdk1.5.0_22_32b

tomcat.DEV.dir=d:/jakarta/tomcat5.0
tomcat.DEV.server=tomcat55-DEV
tomcat.DEV.port=8000

tomcat.MAIN.dir=d:/jakarta/tomcat5.0-MAIN
tomcat.MAIN.server=tomcat55-MAIN
tomcat.MAIN.port=8000
</pre>
<p>To load the property file just include the following instruction in the build script:</p>
<pre class="brush: xml">
&lt;property file=&quot;./tomcat.properties&quot; /&gt;
</pre>
<hr/>Copyright &copy; 2012 <strong><a  href="http://www.narnio.com">Narnio</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@jong-soft.com so we can take legal action immediately.]]></content:encoded>
			<wfw:commentRss>http://www.narnio.com/2010/05/26/controlling-tomcat-using-ant-scripting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Memory issues finally solved</title>
		<link>http://www.narnio.com/2009/10/24/memory-issues-finally-solved/</link>
		<comments>http://www.narnio.com/2009/10/24/memory-issues-finally-solved/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 11:13:11 +0000</pubDate>
		<dc:creator>Jongerius</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[dovecot]]></category>

		<guid isPermaLink="false">http://www.narnio.com/?p=394</guid>
		<description><![CDATA[As I posted before in &#8216;Mysterious problems with my VPS&#8217;, I recently got an increasingly unstable VPS system hosting a lot of my and my customers sites. After a lot of digging I initially presumed that Dovecot (the mail server) was responsible for the issues, as you can read in &#8216;Dovecot causing memory issues&#8217;. Last [...]]]></description>
			<content:encoded><![CDATA[<p>As I posted before in <a  title="View the post" href="http://www.narnio.com/2009/10/15/mysterious-problems-with-my-vps/">&#8216;Mysterious problems with my VPS&#8217;</a>, I recently got an increasingly unstable VPS system hosting a lot of my and my customers sites. After a lot of digging I initially presumed that Dovecot (the mail server) was responsible for the issues, as you can read in <a  title="View the post" href="http://www.narnio.com/2009/10/18/dovecot-causing-memory-issues/">&#8216;Dovecot causing memory issues&#8217;</a>.</p>
<p>Last week I did a lot of debugging on the Debian server to try and find out what was the issue. And initially it was Dovecots memory usage. After disabling this tool for a couple of days the server was still running fine. However the day after I posted the article on Dovecot the server crashed again. So I had to restart my investigation.</p>
<p>First off I had to had to get a better memory management tool, so I installed <em>Htop</em> on the server <em>(apt-get htop</em>)<em>. </em>This shows the current memory usage of each running application. After installing this I enabled all services and applications again and started running stress tests. And though Dovecot was causing some peeks in memory usage it did not keep the high memory usage after the requests where done.</p>
<p>As it turns out for some reason Apache 2.2 was using a lot of memory during peak loads. But even more frustrating it didn&#8217;t seem to release any memory any more. Which was causing issues for services that only spawn when they are being accessed like Dovecot and Postfix, which explained why both of these services crashed when the server halted.</p>
<p>After tweaking the maximum amount of servers Apache is allowed to start and the maximum amount of client threads to handle the memory usage dropped dramatically. And I am very happy to report that the server has been running again for more then a week, without any glitches.</p>
<p>Still it doesn&#8217;t explain why all of this only happened after updating my server with the latest versions and patches. But I&#8217;m glad it&#8217;s solved for now.</p>
<hr/>Copyright &copy; 2012 <strong><a  href="http://www.narnio.com">Narnio</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@jong-soft.com so we can take legal action immediately.]]></content:encoded>
			<wfw:commentRss>http://www.narnio.com/2009/10/24/memory-issues-finally-solved/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netbeans 6.5 Final Release</title>
		<link>http://www.narnio.com/2008/12/05/netbeans-65-final-release/</link>
		<comments>http://www.narnio.com/2008/12/05/netbeans-65-final-release/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 10:47:47 +0000</pubDate>
		<dc:creator>Jongerius</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.narnio.com/?p=230</guid>
		<description><![CDATA[A short while back I wrote a quick review on the beta of Netbeans 6.5 and that it had some issues. Since the final version was released some time ago I thought it was time for a new review. This time of the final version. The reason for me not to write one straight away [...]]]></description>
			<content:encoded><![CDATA[<p>A short while back I wrote a quick review on the beta of Netbeans 6.5 and that it had some issues. Since the final version was released some time ago I thought it was time for a new review. This time of the final version.</p>
<p>The reason for me not to write one straight away was simple, I first wanna play around a little to find all the pleasant features and those less pleasant ones.</p>
<h3>Bigger, better, best</h3>
<p>The first thing you expect is this new version to be bigger, better and the best one yet. Well it is bigger in size, with 190MiB for just Java development. So this means a lot more time downloading, but hey that&#8217;s a one time thing.</p>
<p>So lets move onto something more relevant. Is it better then Netbeans 6.1. Lets summorize some of the issues I had with the previous version and see if the problem is solved:</p>
<ol>
<li>It crashed when working on larger projects. This issue has been fixed, netbeans won&#8217;t crash or hang. Though on occasion the parser may crash. Disabling autocomplete and syntax checking.</li>
<li>For some reason previous versions had difficulty displaying the names of parameters when using Java libraries. For as far as I&#8217;ve been able to determine this has been solved.</li>
<li>The autocomplete completely fails in some more complicated web projects. Well I&#8217;m sorry to say this is still true. For some projects not only does autocomplete fail, but so does the syntax checker, both for the JSP files as well as the Java Source files.</li>
</ol>
<p>So are there any other changes that would make you consider moving from Netbeans 5.5 to 6.5?</p>
<h3>New stuff you will like in Netbeans 6.5</h3>
<p>Well have there been any changes that would make you wanna switch to the new version.</p>
<ul>
<li>The new version actually has some basic debugging integrated of JavaScript. Though I haven&#8217;t got it working yet.</li>
<li>PHP development is now support. Which is a big plus, but it still kinda feels like a cheap addon that doesn&#8217;t work perfectly yet. (Maybe in the next release)</li>
<li>Thread debugging has been improved and made easier</li>
</ul>
<p>Unfortunattely not all is good in the world of Netbeans. There are also some new bugs, some of which are really annoying.</p>
<ul>
<li>For some unexplainable reason adding of libraries by right clicking the &#8216;Libraries&#8217; in the project view doesn&#8217;t work all the time.</li>
<li>Like I stated earlier the code completion fails in some of the older Java project I&#8217;m working on. Not only does code completion fail, but the syntax checker tells me every single line is wrong. Even though the project compiles beautifully <img src='http://www.narnio.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<p>As a final note: is it worth upgrading to this version. Then I&#8217;d have to say hell yeah, it&#8217;s a lot better then previous versions. If you are a PHP developer however I suggest not using it, for the moment. Especially when you are already using Zend-Studio, which is still a lot better.</p>
<hr/>Copyright &copy; 2012 <strong><a  href="http://www.narnio.com">Narnio</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@jong-soft.com so we can take legal action immediately.]]></content:encoded>
			<wfw:commentRss>http://www.narnio.com/2008/12/05/netbeans-65-final-release/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Weird and complicated memory issues in C++</title>
		<link>http://www.narnio.com/2008/11/02/weird-and-complicated-memory-issues-in-c/</link>
		<comments>http://www.narnio.com/2008/11/02/weird-and-complicated-memory-issues-in-c/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 16:30:07 +0000</pubDate>
		<dc:creator>Jongerius</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[General Rant]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[memory management]]></category>

		<guid isPermaLink="false">http://www.narnio.com/?p=226</guid>
		<description><![CDATA[Sometimes when you are developing you encounter the stranged errors. Today is just such a day. I&#8217;m right now having issues with memory access violations in on of the programs I&#8217;m developing. This on its own is not that big of a deal, but I can&#8217;t seem to trace down why it&#8217;s happening. If I [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes when you are developing you encounter the stranged errors. Today is just such a day. I&#8217;m right now having issues with memory access violations in on of the programs I&#8217;m developing.</p>
<p>This on its own is not that big of a deal, but I can&#8217;t seem to trace down why it&#8217;s happening. If I debug the function that causes the error has no issues. No memory violations, but when I continue running (without debugging every single call) then all of a sudden at some point in time I get a memory access violation.</p>
<p>Now I don&#8217;t exactly know where it&#8217;s comming from. It may have something to do with the fact that the object I&#8217;m deleting is a prototype of a prototype. And also occasionally gives me an error during compile time that I have no destructor in the class. But when I compile the files one by one it does not give this error. And the class in question does have a default destructor.</p>
<p>Hmm, guess it&#8217;s time for some real line by line debugging and digging into the internet about the obscure error message I got.</p>
<hr/>Copyright &copy; 2012 <strong><a  href="http://www.narnio.com">Narnio</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@jong-soft.com so we can take legal action immediately.]]></content:encoded>
			<wfw:commentRss>http://www.narnio.com/2008/11/02/weird-and-complicated-memory-issues-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

