<?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>beer planet &#187; debugger keyword</title>
	<atom:link href="http://beerpla.net/tag/debugger-keyword/feed/" rel="self" type="application/rss+xml" />
	<link>http://beerpla.net</link>
	<description>where things have nothing to do with beer - tutorials, tips, how-tos, thoughts, hacks, and other techy nonsense</description>
	<lastBuildDate>Sun, 08 Aug 2010 23:59:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<atom:link rel='hub' href='http://beerpla.net/?pushpress=hub'/>
		<item>
		<title>How To Make Firebug&#039;s JavaScript Debugger Break Inside Dynamic JavaScript Using The &#039;debugger&#039; Keyword (IE &amp; Chrome Too)</title>
		<link>http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/</link>
		<comments>http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 19:39:50 +0000</pubDate>
		<dc:creator>Artem Russakovskii</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[break]]></category>
		<category><![CDATA[breakpoint]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[debugger]]></category>
		<category><![CDATA[debugger keyword]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[keyword]]></category>
		<category><![CDATA[on-demand]]></category>
		<guid isPermaLink="false">http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/</guid>
		<description><![CDATA[<p><a href="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image.png" class="lightview" rel="gallery[1303]" title="image"><img style="margin: 0px 10px 10px 0px; display: inline" title="image" alt="image" align="left" src="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image_thumb.png" width="150" height="147" /></a> As a backend developer, I don&#039;t get to work with JavaScript much anymore. However, from time to time, a project would come along that uses JavaScript (specifically, AJAX) to load some backend data on the fly. Of course, nothing works 100% right away<strong><font size="5">*</font></strong>, so I would often have to tweak this JavaScript and massage it until it does what I need.</p>
<p>Here&#039;s where Firebug comes in with its JavaScript debugger. I&#039;m used to using a debugger in every language I deal with, so using Firebug is a no brainer. Since it supports breakpoints, stopping execution and inspecting local variables...<div class=clear></div> <a href="http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/" class="read_more"><div class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image.png" class="lightview" rel="gallery[1303]" title="image"><img style="margin: 0px 10px 10px 0px; display: inline" title="image" alt="image" align="left" src="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image_thumb.png" width="150" height="147" /></a> As a backend developer, I don&#039;t get to work with JavaScript much anymore. However, from time to time, a project would come along that uses JavaScript (specifically, AJAX) to load some backend data on the fly. Of course, nothing works 100% right away<strong><font size="5">*</font></strong>, so I would often have to tweak this JavaScript and massage it until it does what I need.</p>
<p>Here&#039;s where Firebug comes in with its JavaScript debugger. I&#039;m used to using a debugger in every language I deal with, so using Firebug is a no brainer. Since it supports breakpoints, stopping execution and inspecting local variables and the rest of the scope generally beats alerts and console.logs for me.</p>
<p>Here&#039;s what a typical breakpoint looks like in Firebug:</p>
<p><a href="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image_3.png" class="lightview" rel="gallery[1303]" title="Firebug JavaScript breakpoint triggered"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="Firebug JavaScript breakpoint triggered" alt="Firebug JavaScript breakpoint triggered" src="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image_thumb_3.png" width="700" height="173" /></a> </p>
<p>It&#039;s easy to set breakpoints in static scripts &#8211; just open the Scripts tab, select a JavaScript file from the dropdown menu, and click to the left of the wanted line number.</p>
<p>Then, when the page is reloaded, if your breakpoints are triggered, Firebug will pause script execution and transfer the control to you.</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="Setting Firebug JavaScript breakpoint" alt="Setting Firebug JavaScript breakpoint" src="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image_4.png" width="593" height="179" /></p>
<p>In most cases, the method above is the only method of setting breakpoints you will ever need to use.</p>
<h2>The Problem With Dynamic JavaScript</h2>
<p>However, what if the JavaScript file where you need to set breakpoints is not static but instead dynamic (generated on the fly). If you set a breakpoint in this case and reload the page, the breakpoint will most likely disappear, especially if the JavaScript url is generated uniquely every time.</p>
<h2>The Solution</h2>
<p>If you have access to the source, the solution comes in the form of the</p>
<div class="wp_syntax"><div class="code"><pre>debugger;</pre></div></div>
<p>keyword. Just add it to your dynamic JavaScript generator or into any JavaScript file you have access to exactly where you want Firebug to break, and voila &#8211; it does.</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="JavaScript debugger keyword" alt="JavaScript debugger keyword" src="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image_5.png" width="345" height="94" /> </p>
<p>More so, this method also works in Google Chrome and <a href="http://www.codestore.net/store.nsf/unid/DOMT-5UBUVW" rel="nofollow">IE (if you have Microsoft Script Debugger)</a>. Here is a screenshot of my Chrome Beta 4.0.266.0 triggering:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" alt="Chrome JavaScript debugger" src="/for_www/chrome-js-debugger.png" /></p>
<p> I consider this feature relatively unpublished and therefore awesome because:</p>
<ul>
<li>it&#039;s hard to search for this specific meaning of the keyword &quot;debugger&quot; when Firebug itself is a debugger and it&#039;s a very popular word </li>
<li>nobody really reads documentation for Firebug, and even if they do, I haven&#039;t actually seen the debugger keyword mentioned </li>
<li>I didn&#039;t know about it until recently, even though I&#039;ve been using Firebug for years </li>
</ul>
<p>Of course, you need access to the code for this to work, so it&#039;s not going to work if you&#039;re trying to debug someone else&#039;s JavaScript.</p>
<p>And finally, don&#039;t forget to remove any traces of &#039;debugger&#039; from your code when you go live or your users will rightfully hunt you down.</p>
<h2>Credits And References:</h2>
<ul>
<li>suggested by a co-worker from <a href="http://www.plaxo.com" rel="nofollow">Plaxo</a> &#8211; Russ. Thanks Russ! </li>
<li>some more interesting info at <a href="http://stackoverflow.com/questions/858779/making-firebug-break-inside-dynamically-loaded-javascript" rel="nofollow">StackOverflow</a> and <a href="http://devcenter.infragistics.com/Articles/ArticleTemplate.Aspx?ArticleID=2183" rel="nofollow">Infragistics</a>. </li>
</ul>
<p>Happy debugging!</p>
<p>(<strong><font size="5">*</font></strong>) &#8211; if your project works 100% on the first pass, you must be either a magician or <a href="http://stackoverflow.com/users/22656/jon-skeet" rel="nofollow">Jon Skeet</a> (<a href="http://meta.stackoverflow.com/questions/9134/jon-skeet-facts" rel="nofollow">Jon Skeet Facts</a> &#8211; a-la Chuck Norris, a must read).</p>
<div class="shr-bookmarks shr-bookmarks-expand">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+%5B..%5D+-+http://bit.ly/aUKYre&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;t=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-hackernews">
			<a href="http://news.ycombinator.com/submitlink?u=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;t=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22How%20To%20Make%20Firebug%27s%20JavaScript%20Debugger%20Break%20Inside%20Dynamic%20JavaScript%20Using%20The%20%27debugger%27%20Keyword%20%28IE%20%26amp%3B%20Chrome%20Too%29%22&amp;body=Link: http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/ (sent via shareaholic)%0D%0A%0D%0A----%0D%0A %20As%20a%20backend%20developer%2C%20I%20don%27t%20get%20to%20work%20with%20JavaScript%20much%20anymore.%20However%2C%20from%20time%20to%20time%2C%20a%20project%20would%20come%20along%20that%20uses%20JavaScript%20%28specifically%2C%20AJAX%29%20to%20load%20some%20backend%20data%20on%20the%20fly.%20Of%20course%2C%20nothing%20works%20100%25%20right%20away%2A%2C%20so%20I%20would%20often%20have%20to%20tweak%20this%20JavaScript%20" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
Similar Posts:<ul><li><a href="http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/" rel="bookmark" title="January 13, 2010">[WordPress Plugin Development] How To Include CSS and JavaScript Conditionally And Only When Needed By The Posts</a></li>
<li><a href="http://beerpla.net/2010/01/31/heres-an-exclusive-10-off-nuspheres-phped-coupon-also-includes-nucoder-and-phpdoc-discount-code/" rel="bookmark" title="January 31, 2010">Here&#039;s An Exclusive 10% Off NuSphere PHPEd Discount Coupon Code (Also Includes NuCoder And PHPDoc)</a></li>
<li><a href="http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/" rel="bookmark" title="June 9, 2009">How To Make Your Site Lightning Fast* By Compressing (deflate/gzip) Your HTML, Javascript, CSS, XML, etc In Apache</a></li>
<li><a href="http://beerpla.net/2010/01/15/follow-up-to-loading-css-and-js-conditionally/" rel="bookmark" title="January 15, 2010">Follow-up To Loading CSS And JS Conditionally</a></li>
<li><a href="http://beerpla.net/2009/04/08/perl-finding-files-the-fun-and-elegant-way/" rel="bookmark" title="April 8, 2009">[Perl] Finding Files, The Fun And Elegant Way</a></li>
</ul><!-- Similar Posts took 12.489 ms --><p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>
