Get ColdFire!

As you may have seen on Ray's blog, today we released version 1.0 of the ColdFire ColdFusion Debugger. For those that don't know ColdFire is extension to the Firebug Firefox extension, similar to YSlow, only ColdFire displays ColdFusion debugging info. To use ColdFire you need to install a custom debugging template on your server (coldfire.cfm) then configure ColdFusion to use this template via the Administrator. (Detailed installation instructions can be found in the download.)

To actually see the output from this template you need to be using Firefox and have both the Firebug and ColdFire extensions installed. Once everything is set up you will then have your ColdFusion debugging info available in the Firebug panel instead of on the page.

ColdFire shows a great deal of info including:

General Info:

ColdFire shows some general info like Application name, ColdFusion version, Template, etc.

Execution Times:

Similar to the default debugging template, ColdFire shows the execution times of all the templates and CFC methods executed in the request. Exection times of more than than 50ms are shown in red.

DB Queries:

ColdFire also shows all the queries executed for a particular request. Unlike the the built in debugging templates you can choose to have ColdFire output queryparam values in the displayed query SQL by selecting the "Parse Query Parameters" option, which is very useful if you need to copy a query to a SQL editor to execute against your database.

Note that this option is enabled by by default, but you can turn it off if you would like to see what is actually being passed to the query using <cfqueryparam>.

Traces:

ColdFire outputs messages from the <cftrace> tag color coded depending on the type: information, warning, error, or fatal Information.

Timer:

ColdFire also outputs messages from the <cftimer> tag.

Variables:

Probably one of the cooler features of ColdFire is the ability to dump page variables. From the variables tab you can add a variable you would like to dump by typing its name on the Add Variable line and pressing enter. Refresh the page and you will then see the value of the variable in the value column of the Variables tab. You can add as many variables as you would like. To remove a variable, hover over the variable row and click the "X" button that appears at the right of the row. To remove all variables and start fresh click Clear Variables in the Options menu.

Note that right now you get a dump of the metadata for components and functions (UDFs). This means they show up as an object and do not have the special formatting/color you may be used to with the cfdump tag.

Speaking of formatting, the nice formatting of complex variables comes courtesy of the Javascript dump method. Thanks to the folks at Net Grow Web Design for letting us use their code in this project.

So please check ColdFire out and let us know what you think. I'll be posting more soon on how we implemented some of this nifty goodness...

Related Blog Entries

Comments
Terrence Ryan's Gravatar Just installed it. I love the new variable features. It really makes the whole thing indispensable.
# Posted By Terrence Ryan | 9/25/07 12:48 PM
Jason Harris's Gravatar Hrummm. I must have missed something, because I get no debugging output. Classic works ok. I have set the debugger to Coldfire and I get nada on the Coldfusion tab when browsing a CF page on my dev box. Here is my setup:
FF 2.0.0.7
Latest Firebug
CF 8

Any ideas? Thanks..
# Posted By Jason Harris | 9/25/07 1:43 PM
Nathan Mische's Gravatar @Jason - Did you install the ColdFire Firefox extension?
# Posted By Nathan Mische | 9/25/07 1:53 PM
Jason Harris's Gravatar @Nathan Always ask the obvious first. Yes, I did. I see the Coldfusion Tab in firebug, its just not displaying anything.
# Posted By Jason Harris | 9/25/07 2:00 PM
Nathan Mische's Gravatar @Jason - If you go to the Firebug Net tab do you see any response headers that begin with x-coldfire?
# Posted By Nathan Mische | 9/25/07 2:43 PM
Jake's Gravatar Has this been tested with CF 8? It looks like it is all working aside the variables I have nothing there.
# Posted By Jake | 9/25/07 2:45 PM
Nathan Mische's Gravatar @Jake - Did you add a variable you want to see dumped? If so you need to refresh the page to see the variable value.

Also keep in mind that ColdFire only has access to variables that are in scope for the page. By that I mean you couldn't dump a var scoped variable from within a component.
# Posted By Nathan Mische | 9/25/07 2:55 PM
Jason Harris's Gravatar @Nathan - No, I sure don't.
# Posted By Jason Harris | 9/25/07 2:56 PM
Nathan Mische's Gravatar @Jason - A few more obvious questions:
1. Is "Enable Request Debugging" check in the Administrator?
2. Are most of the options under "Custom Debugging Output" checked?

If those settings are enabled, can you check the request headers and see if the User-Agent string contains "ColdFire/1.0".
# Posted By Nathan Mische | 9/25/07 3:04 PM
Jason Harris's Gravatar Yes to the first questions.
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 ColdFire/1.0

Argh! What in the world could be happening you think?
# Posted By Jason Harris | 9/25/07 3:32 PM
Nathan Mische's Gravatar Could be that the coldfire.cfm is throwing an error for one reason or another.
# Posted By Nathan Mische | 9/25/07 4:01 PM
Terry Schmitt's Gravatar What is the official word on ajax requests? I have v1.0 installed and working for normal pages, but no output from ajax requests. Using Firebug, I can see the ColdFire data in the response header, but it is simply not displayed in Coldfire.
Pretty nifty tool as-is.
# Posted By Terry Schmitt | 9/25/07 8:28 PM
Nathan Mische's Gravatar @Terry - To be honest the code that populates the panel was written before I started working on the project so I'm not entirely sure. I do know that the class that writes the header data to the panel implements the nsIWebProgressListener interface, http://developer.mozilla.org/en/docs/nsIWebProgres.... I'll have to take a closer look at the code to see what is going on, but my guess is that listener is only firing for document loads, not XMLHTTP requests.
# Posted By Nathan Mische | 9/25/07 9:15 PM
ian's Gravatar I'm having the same problem - shows up in the header but doesn't output any results.
# Posted By ian | 9/25/07 10:28 PM
Nathan Mische's Gravatar @Ian - So you see x-coldfire headers in the response headers? If so can you post them?
# Posted By Nathan Mische | 9/26/07 4:49 PM
Michael Sharman's Gravatar Hi Nathan,

Fantastic tool, I've just started using it and I love it! Congratulations and well done!

Only one strange thing for me is that I get no 'variables' output when using FarCry, not sure why this is though.
# Posted By Michael Sharman | 9/26/07 8:04 PM
Nathan Mische's Gravatar Thanks Michael. I was planning on installing FarCry 4 in the next few days to do some testing. What version are you using?
# Posted By Nathan Mische | 9/26/07 9:34 PM
Michael Sharman's Gravatar @Nathan - I'm using FarCry 4.0.8
# Posted By Michael Sharman | 9/26/07 10:00 PM
Seb Duggan's Gravatar @jason/@ian: have you checked that your debugging output is not IP restricted? I think CF8 automatically turned this on for me... I got nothing in ColdFire at first until I changed this...
# Posted By Seb Duggan | 9/27/07 5:46 AM
ian's Gravatar Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 ColdFire/1.0

I made sure that all ip addresses were removed from the debugger. No luck.
# Posted By ian | 9/27/07 9:57 AM
Nathan Mische's Gravatar @Michael - I just tested with FarCry 4.0.3 and it seems to be working for me. I tested by dumping request.stobj on the default home page.

I did however hit what appears to be a bug. If you try to dump a large variable, say the entire request scope, you get nothing. We split large values into multiple headers and there appears to be an issue joining them back together in the ColdFire extension. (This issue was first reported by Ruslan Sivak on the ColdFire site.)
# Posted By Nathan Mische | 9/28/07 11:51 AM
ian's Gravatar CF 1.0.0.1 doesn't fix the empty debugger bug.
# Posted By ian | 9/28/07 4:35 PM
BlogCFC was created by Raymond Camden. This blog is running version 5.8.001.