<?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>Thu, 17 May 2012 22:50:53 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</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 and the rest of the scope generally beats alerts and console.logs for me.</p><p>Here&#039;s what a typical breakpoint looks ...<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://www.shareaholic.com/api/share/?title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%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&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%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&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%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&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%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&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%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&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%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&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" 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.shareaholic.com/api/share/?title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%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&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" 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="http://www.shareaholic.com/api/share/?title=How%20To%20Make%20Firebug%27s%20JavaScript%20Debugger%20Break%20Inside%20Dynamic%20JavaScript%20Using%20The%20%27debugger%27%20Keyword%20%28IE%20%26amp%3B%20Chrome%20Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%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&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" 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">[Updated for 2012] 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/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/" rel="bookmark" title="November 6, 2010">How To Dynamically Increase Memory Limits When Interfacing With WordPress Using XML-RPC (Windows Live Writer, Etc)</a></li><li><a
href="http://beerpla.net/2012/04/13/how-to-fix-incomplete-wordpress-wxr-exports/" rel="bookmark" title="April 13, 2012">How To Fix Incomplete WordPress (WXR) Exports</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2009%2F12%2F17%2Fhow-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too%2F&amp;title=How%20To%20Make%20Firebug%26%23039%3Bs%20JavaScript%20Debugger%20Break%20Inside%20Dynamic%20JavaScript%20Using%20The%20%26%23039%3Bdebugger%26%23039%3B%20Keyword%20%28IE%20%26amp%3B%20Chrome%20Too%29" id="wpa2a_2"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></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>15</slash:comments> </item> </channel> </rss>
