Blog

30May
2007
Getting Started With The ColdFusion Debugger

After a 7 year hiatus, ColdFusion once again has an interactive debugger, and this time it is built on top of Eclipse (and uses the same debugging interface as Flex Builder, and other Eclipse plug-ins). If you are interested in taking the debugger for a spin, here's what you need to know to get started:

First of all, you need ColdFusion 8. If you don't have it yet, get it!

You'll also need the ColdFusion 8 Eclipse extensions, and these must be installed (here is some installation help).

Before you can use the interactive debugger you need to enable debugging support in ColdFusion. Here's what you need to do:

  1. Open the ColdFusion Administrator.
  2. Select "Debugger Settings" in the "Debugging & Logging" section.
  3. Check "Allow Line Debugging".
  4. The debugger needs a port to communicate over, if you can't use the default change it (just be sure to use an unused port, and you can't use the port that ColdFusion itself is on).
  5. By default ColdFusion allows up to 5 concurrent debugging sessions, you can raise or lower this value as needed.
  6. Click "Submit Changes", and restart ColdFusion is you are instructed to do so.

Once you enable line debugging it will remain enabled even if ColdFusion is restarted. As a rule, do not enable line debugging on production servers, and you may want to always leave it enabled on development boxes.

Now that debugging is enabled, you need to configure Eclipse to tell it what ColdFusion server to debug against. Servers need to only be defined once, and once defined you may debug against them as needed. You can define as many servers as you need, local and remote, as long as the server has RDS enabled (and you have an RDS login).

The first thing you need to do in Eclipse is define the RDS settings for your ColdFusion server. These settings are used by the debugger, as well as the wizards, RDS panels, and more. To define your RDS connection do the following:

  1. In Eclipse, select Window->Preferences to display the Preferences dialog.
  2. Select ColdFusion in the tree, expand the selection, and select RDS Configuration.
  3. Click New to add a new server, or just select any server to edit it.
  4. Provide a description, host name, port, and login details, and then save. To use your local ColdFusion server specify 127.0.0.1 as the Host Name, 8500 as the Port (if using the integrated HTTP server), leave the Context Root blank, and provide the login information.
  5. Click "Test Connection" to make sure the RDS connection is working, and the click OK.

Once the RDS connection is defined you'll be able to browse data sources in the RDS Dataview tab, view available CFCs in the Services Browser tab, use the wizards, and more. And you'll be able to debug applications, but first ...

Now that your RDS connection is defined, you need to define the ColdFusion servers you wish to debug against. Here is what you need to do:

  1. Locate the Debug button in the toolbar, it's the one with the little green bug on it.
  2. Don't click the button, instead, click the down arrow to the right of it and select "Debug ..." to display the Debug dialog which is used to manage debugging configurations.
  3. The Eclipse debugger is used to debug all sorts of applications created in all sorts of languages, and along the left of the dialog you'll see a list of applications types that can be debugged. Select "ColdFusion Application".
  4. You'll see any defined ColdFusion debugging servers under the "ColdFusion Application" branch. To add a ColdFusion server click the New button (the leftmost one above the list) while you have "ColdFusion Application" selected.
  5. Name this server, and then select the RDS server to use from the drop down list.
  6. If you are debugging against a local server (running on the same machine as Eclipse) you can ignore the mappings section. If ColdFusion is on a remote server then you'll need to define mappings here.
  7. Click "Apply" to save your changes.

Again, servers need to be defined once, and they'll be saved for future use.

To debug your code you can do the following:

  1. Open the ColdFusion file to be debugged in Eclipse.
  2. Set breakpoints as needed by double clicking to the left of the desired line in the vertical bar to the left of the Eclipse editor window. You'll see a little circle appear indicating that a breakpoint has been set. You can also right click in the vertical bar and select "Toggle Breakpoint".
  3. Now you need to switch to the Eclipse Debug view (called a "Perspective" in Eclipsese). If you see a Debug button listed with the Perspectives on the top right of Eclipse, click it. Or, just click the Open Perspective button (or select Windows->Open Perspective) and select "Debug".
  4. Once you are in the Debug perspective start the debugging session. To do this, go back to the dialog where you defined the ColdFusion server (under the Debug button), select the ColdFusion server to debug against, and click the Debug button at the bottom of the dialog.
  5. Eclipse will pause while it opens a debug session, connecting to the specified ColdFusion server. You'll see the connection show up in the Debug window.
  6. Now just open any browser and run your application. When you request a page with a breakpoint, execution will pause, and the debugger will pop up. You'll be able to step through code, view variables and expressions (in the top right panel), see generated server output, and more.
  7. When you are done debugging, you can terminate the debug session by clicking the red square Terminate button.

And that'll do it. I know this seems complex and a lot of work, but the bulk of it is initial setup. Once that setup is complete you'll be able to quickly and easily fire up the debugger on demand and when needed.

Related Blog Entries

Comments (37)



  • Marcin Szczepanski

    One gotcha I ran into when trying to get the debugger to work - when I went to "http://cf.local/"; (my localhost CF server) nothing happened, I had to go to "http://cf.local/index.cfm"; for it to actually trigger the debugger. Which makes sense since it only triggers on certain extensions, but took me a little while to work out!

  • j_hotch

    Anyone having issues connecting to 127.0.0.1:80? Eclipse doesn't seem to pass along my RDS password correctly.

    #2Posted by j_hotch | May 30, 2007, 06:35 PM
  • Ben Garrett

    As a person thats not very familiar with CFEcIipse I found that last chapter "To debug your code you can do the following:" very hard to follow. Could someone post some screen shot instructions?

  • Ben Forta

    Ben, I did not want this to be an Eclipse intro, it was getting too long already. But, I can add more details if you'd like, what specifically was problematic for you?

    --- Ben

    #4Posted by Ben Forta | May 30, 2007, 09:46 PM
  • Ben Garrett

    Thanks Ben I was having problems with the whole ..

    Set breakpoints as needed by double clicking to the left of the desired line in the vertical bar to the left of the Eclipse editor window. You'll see a little circle appear indicating that a breakpoint has been set. You can also right click in the vertical bar and select "Toggle Breakpoint".

    I wasn't hitting the right spot with the mouse for the Breakpoints. But I found out you can just use Ctrl-Shift-B.

  • Rick O

    If you are getting messages about Eclipse not being able to connect to the server, your firewall software might be to blame. If it is an application firewall, you'll need to add "{cfroot}\runtime\jre\bin\java.exe" to your exceptions, as that is the process that makes the debugger connections.

    It looks like it uses incrementing port numbers starting around 4129 or so, but I don't know if that is reliable enough to configure port-based security instead of app-based security.

    #6Posted by Rick O | May 31, 2007, 10:18 AM
  • Ray

    I couldn't seem to find "Debug button in the toolbar, it's the one with the little green bug on it." Is it buried under a menu somewhere?

    I'm still trying to like eclipse!

    #7Posted by Ray | May 31, 2007, 10:39 AM
  • Ray

    Sorry to bother ... Aptana was showing a different menu for the green bug button. I disabled Aptana and am now having more predictible results.

    I'm still not loving Eclipse though! :[

    #8Posted by Ray | May 31, 2007, 10:47 AM
  • Ben Forta

    Ray, that's a good point. Eclipse is so configurable that depending on what plug-ins you have installed it can look totally different, which makes providing instructions very tricky.

    --- Ben

    #9Posted by Ben Forta | May 31, 2007, 11:01 AM
  • j_hotch

    Hi All! I know this isn't a tech support forum but if anyone is able to get Eclipse to connect via RDS to 127.0.0.1 port 80 on an IIS 5.1 server please post the details. The firewall suggestion didn't help, unfortunately. Thanks!

    #10Posted by j_hotch | May 31, 2007, 04:07 PM
  • Ian

    I am looking in Windows>preferences and don't see a Coldfusion option. There is one for cfeclipse but not Coldfusion so I can't figure out how to set up RDS.

    #11Posted by Ian | Jun 6, 2007, 01:14 AM
  • andrea

    I use the beta as stand alone on my localhost.
    I enabled the line debugging and check as in mx7 the debug option......but nothing no way to get debug informations!!!

    Any tip?

    Thanks

    Andrea

    #12Posted by andrea | Jun 10, 2007, 08:44 PM
  • Ian

    Did you install RDS when you installed the beta? If you don't it won't work.

    #13Posted by Ian | Jun 10, 2007, 09:45 PM
  • Anwar

    I am trying to debug my code on Eclipse 3.2 ,
    i have installed plugins and done all steps..
    also added port number to java.config file.

    the test connection is successful in the RDS configuration window.

    But when i press the Debug button in DEBUG window the Error message comes..
    Connection Refused: connect.

    #14Posted by Anwar | Jul 19, 2007, 01:42 AM
  • etienne

    Hi,

    I've got the debugger working well for most code.

    But now I'm digging into Mach-ii code... I've got a break point set inside a Mach-ii listener ( a *.cfc file)... but when i request a Web page where the logic will go through that cfc file, the brower request hangs forever and the break point is never reached by the debugger.

    Does anyone know if the Coldfusion 8 debugger is supposed to work with frameworks like Mach-II? ... and if so, any suggestions for how I could get this to work.

    #15Posted by etienne | Aug 9, 2007, 03:01 AM
  • Kal

    Error setting up CF8 debugger. Apologies for the extra long message.
    I have multi server config but no separate instances. I setup debugging as above, port 5005 in CF admin and 8300 in RDS config. I got successful connection test from eclipse RDS configuration. When I go do debug perspective and start debug I get an error with the following message.
    --------------------------------------
    Unable to connect to the RDS server 'localhost'.
    Ensure that the server is currently running and that line debugging and RDS are enabled.
    You may also need to check your RDS connection settings in Eclipse to ensure that they are correct.

    Error Message:
    Error connecting to JVM for debugging at localhost:5005.
    Could not attach to the VM at port 5005
    You must specify this debugger port in the JVM settings of your application server, for example:
       -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
    You will also need to make sure that another debugger is not currently connected to the CF JVM at the same port (5005)

    Root cause ->
    Connection refused: connect
    --------------------------------------
    I added this line to JVM settings from JRun Administrator. Still same issue.
    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

    -- Thanks for any help!!

    #16Posted by Kal | Aug 9, 2007, 04:14 PM
  • Ron West

    If anyone is having the "Connection refused: connect" issue, I suggest that you look at which JVM you are using. I am not a JVM expert but when I switched from the 1.6 to the 1.5 it seemed to work correctly.

    #17Posted by Ron West | Aug 25, 2007, 10:20 AM
  • Jacky Wu

    Hi All,

    I've followed all the steps in setting up Eclipse and the CF server for debugging and still have some difficulties. The following is my setup:

    - both Eclipse and CF server on same machine (Vista Business w/ IIS)
    - Eclipse 3.3 Europa
    - CF Eclipse extension installed (updated version on Ben Forta's site and NOT from Adobe's site)
    - debugger port: 5005 (with '-DEBUGGER_SERVER_PORT=5005' added to jvm.config)
    - Eclipse RDS config: 127.0.0.1, port 8300 (multiserver config), Test Connection successful
    - debugger setup: homepage URL: http://localhost:8300/ with no mappings
    - tried with Windows Firewall turned OFF, or ON with port 5005 opened and '{cfroot}\runtime\jre\bin\java.exe' added to program exception

    So with this setup I tried clicking on the Debug button in Eclipse, it'll say "Launching localhost:(19%) at the bottom status bar and stay stuck forever. So basically I wasn't able to go into the debug environment at all. I looked up the CF log and it did have an entry saying "ColdFusion debugger is listening at port 5005" after I clicked "Debug".

    Any suggestions?

    Thanks!

    #18Posted by Jacky Wu | Sep 11, 2007, 12:31 AM
  • vkrupach

    To Kal:
    I have the same ColdFusion configuration and got the same error.
    I resolved it by adding:
    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
    to the Arguments to VM section of the jvm.config file. By default it's in C:\JRun4\bin\
    Hope this helps!

    #19Posted by vkrupach | Jan 4, 2008, 12:43 PM
  • Jonathan

    I'm just having problems with CF8 debug period. the debug text just doesn't show up. i've tried putting 127.0.0.1 in obviously, as well as no IP, and the static IP of this PC.
    I've been using CF since 4.0, so it's not like i haven't done this a billion
    times. i'm not excited about reinstalling CF8 to fix it. It's working correctly
    on another public webserver of ours. we haven't installed a SP to CF8 (is one
    available yet?)

    ARGH. I reinstalled CF8 again, same issue - NO DEBUG OUTPUT. The crazy thing
    is it was working fine for a long time. it only recently (yesterday) stopped
    displaying debug data.
    HELP!

    any ideas on a work-around?

    #20Posted by Jonathan | Jan 18, 2008, 09:52 AM
  • Allard

    Jonathan,

    I can confirm this bizar behaviour of CF8. Debug info simply doesn't turn up.

    Allard

    #21Posted by Allard | Jan 23, 2008, 09:36 AM
  • Jonathan

    well in this case I found one of my developers had inserted a anti-debug script into a fbx_settings.cfm file (we use Fusebox3) that stopped the debugging programmatically.
    <CFPARAM NAME="attributes.debug" DEFAULT="false">
    <CFIF attributes.debug>
       <CFSETTING SHOWDEBUGOUTPUT="true">
    <CFELSE>
       <CFSETTING SHOWDEBUGOUTPUT="false">
    </CFIF>

    #22Posted by Jonathan | Jan 23, 2008, 09:42 AM
  • James F

    I've tried to get debugging to work probably about a dozen times, on client servers and my own, using the built-in developer CF server, Jrun server, trial server, etc., and have encountered all the same errors and not ONCE has it ever worked.

    I don't understand why Adobe would reintroduce such a powerful tool yet have done such a poor job of it. It's very frustrating.

    Personally I've given up trying, and especially have stayed away from Eclipse. I am a little surprised they haven't supported their own Macromedia branded tools such as Homesite and Dreamweaver. >:(

    #23Posted by James F | Feb 26, 2008, 04:12 PM
  • Jay Pandya

    Until today i was using the debugger for cold fusion of fusion debug .But today it's License need to buy.So Before few days i found that coldfusion8 has built in support for line debugging so tried to implement that.Firstly i used the link http://www.adobe.com/devnet/coldfusion/articles/de...
    Which is having all steps with the screen shots.I was facing the problem regarding the debugging port which was not defined on that page.So i just gone through your page and in your page it is mentioned that use any port number so i used different PORT like 8600 and it run sucessfully

    Thank you very much for your support

  • Ken Stine

    Over the past 2 months we have been trying to configure Eclipse to work REMOTE to the server and when that was unsuccessful we installed Eclipse on the physical production CF8 Server. We run a Multi-Instance JVM servers, modified the custom JVMs with specific UNUSED ports and no luck at all.

    We have an open Adobe Support ticket over the past two weeks and even Adobe has not been able to solve the problem Line Debug issues. This has been most exhausting and frustrating issue and I agree with Jonathan. How can Adobe and the CF Staff there let something so shabby go to the public.

    #25Posted by Ken Stine | May 20, 2008, 05:14 PM
  • ChrisT

    Hi,
    I managed to succesfully run the debugger for the default scope settings, but when I enable APPLICATION or SESSION scope the debugger server seems to hang up on the first breakpoint with no error message and gets stuck forever. When this happens CF doesnt reply to any requests to this application until i restart the debugger server from admin panel.
    I have CF8 developer edition installed locally on a Apache server, i successfully connect to the RDS using port 80 (8500/8300 didn't work).
    To sum up it works well as long as APPLICATION or SESSION scope is disabled.
    ChrisT

    #26Posted by ChrisT | Jul 2, 2008, 09:25 AM
  • venkata

    hi folks,
    I have installed Eclipse. Added the CFEclipse plugins and also configured RDS. My problem is that coldfusion server is remote and eclipse is in my workstation. how to do mappings in line debugger settings for eclipse path and coldfusion path.

    #27Posted by venkata | Jul 18, 2008, 11:23 AM
  • Darren Cook

    I struggled with getting debugging enabled for a day before I finally got it working.

    My issue was that the test connection always failed from Eclipse.

    It started working after I did all the following:
    * Installing the CF 8.0.1 update.
    * In Eclipse, uninstalled cf8_extensions_for_eclipse.zip and installed CF801-Extensions-For-Eclipse.zip (which I just downloaded from Adobe's site)
    * Fixed my proxy settings in Eclipse: under Windows > Preferences, add localhost and 127.0.0.1 under both Internet Proxy Settings: "Non-proxy Hostnames" and General: Network Connections: "No Proxy for"

    Note that with the new CF801 extensions, RDS settings are moved from Preferences > ColdFusion to Preferences > Adobe.

    #28Posted by Darren Cook | Aug 8, 2008, 01:47 PM
  • Doron Katz

    Hiya yeah im totally having trouble even looking at all the comments in this post so far.


    I am runnin CF8 on multiserver locally, and access it normally via http://localhost/name

    I put in the debugging settings port 7005 and in the jvm.config file:
    # Arguments to VM
    java.args=-Xmx512m -Dsun.io.useCanonCaches=false -XX:MaxPermSize=192m -XX:+UseParallelGC -Djava.awt.headless=true -Dcoldfusion.rootDir=/{ap$
    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7005
    -debugger_server_port = 7005


    CF is running on 8300 i believe, looking at the coldfusionlauncher applet which shows it running at that. Ive restarted apache, restarted coldfusion, enabled debugging etc.

    Now, going on RDS Configuration preferences in eclipse, I have tried 127.0.0.1 with port 80, 8300, 8500, 8080, 7005 and it still can't connect.

    If anyone cal help, would be much appreciated.

    #29Posted by Doron Katz | Sep 8, 2008, 01:09 AM
  • Laker Netman

    I am (as it appears many others are) trying to set up line debugging with CF8 using Eclipse.

    My set up:
    CF8 (8.0.1 patch applied) running on a remote server within our LAN (no internal firewalls)
    CF XML configuration file has RDS uncommented
    RDS is enabled on the server using port 5005 (5 session max)
    No RDS password is configured
    I'm running Eclipse Europa 3.3.2 with:
    Adobe "ColdFusion Extensions for Eclipse" v1.0.191910
    CFEclipse v1.3.3.200901061421

    Regardless of how I set up things under "RDS Configuration" I constantly (and only) get the error:
    Unable to contact the RDS Server 'CF8BETA'. Where, of course, CF8BETA is my server hostname.
    I have tried using the IP as well as various ports. I presumed 5005, but also tried 80, 8300, 8500 and some nonsensical values as well (read "frustration").

    I also have Dreamweaver (CS3) and can connect with it via RDS without issue.

    I have read many posts and am confident that I have everything in place so... *Does RDS work with Eclipse*?

    Thanks,
    Laker

    #30Posted by Laker Netman | May 4, 2009, 05:41 PM
  • Darren Cook

    Yes, it does work, I just got it set up for a new developer and for myself this last week. We were using the Eclipse 3.4.x platform, but I don't imagine that's truly the solution because I was running it fine under 3.2 before. Also using CF 8.0.1 under the JRun multiserver install. I'm afraid I can't add any more advice other than what's given above, but I can provide the glimmer of hope that if you keep pecking away at the issue it should be possible to get it working.

    FYI: the correct port IS the port listed in the JVM config file setting, so 7005 for Doron and 5005 for Laker are the right choices.

    #31Posted by Darren Cook | May 5, 2009, 09:33 PM
  • Laker Netman

    Ok, since I *finally* got this working I thought I'd share my solution.

    I started looking at the conversation between client and server at the packet-level and discovered the issue in my case. Adobe's RDS plugin for Eclipse doesn't understand 'flate (gzip). That is, it doesn't know how to decode a compressed http packet from the server, which is a pretty common configuration!

    To solve in IIS 6 (from IIS Manager):
    1. right-click "Web Sites" folder
    2. click "Properties"
    3. click on the "Service" tab
    4. uncheck "Compress application files" (the second option "Compress static files" can remain checked)
    5. click "OK"
    6. Restart IIS (don't skip this step!)

    Voila! Instant connection!

    Of course YMMV, but I hope this can help someone else.

    Laker

    #32Posted by Laker Netman | Jun 11, 2009, 03:01 PM
  • Laker Netman

    Oh, and my connection port is 80.

    L8kr

    #33Posted by Laker Netman | Jun 11, 2009, 03:02 PM
  • john85

    My RDS is working, but when running debugging (Test connection is successful), the following error occurred.

    --------------------------------
    Unable to connect to the RDS server 'localhost'.
    Ensure that the server is currently running and that line debugging and RDS are enabled.
    You may also need to check your RDS connection settings in Eclipse to ensure that they are correct.

    Error Message:

    String index out of range: -2
    --------------------------------

    Server: CF 8.0.1 with IIS

    #34Posted by john85 | Aug 17, 2009, 11:08 AM
  • Ricarte Jr

    I had this problem. I decided as follows: I opened the file “C: \ Windows \ System32 \ drivers \ etc \ hosts” and changed to: 127.0.0.1 localhost

    #35Posted by Ricarte Jr | Oct 17, 2009, 10:31 AM
  • Ricarte Jr

    I had this problem. I decided as follows: I opened the file “C: \ Windows \ System32 \ drivers \ etc \ hosts” and changed to: 127.0.0.1 localhost

    #36Posted by Ricarte Jr | Oct 17, 2009, 10:31 AM
  • Goutham

    I have the same problem. I am trying to connect to a remote server and sure about the connection details and I get the same error

    #37Posted by Goutham | Jan 14, 2010, 06:33 PM