Title: Step Through Your CFML Code With FusionDebug
1Step Through Your CFML Code With FusionDebug
- Charlie Arehartcharlie_at_carehart.org
2Topics
- Introduction to Step Debugging
- FusionDebug Features
- FusionDebug Demo
- Benefits Over CFDUMP/CFOUTPUT
- Other Features, Learning More, Gotchas, Pricing,
FAQs, etc.
3About Your Speaker
- Independent consultant since Sept 2006
- Formerly CTO, New Atlanta (BlueDragon)
- 9 yrs CF experience (24 in Enterprise IT)
- Member, Adobe Community Experts
- Co-author, ColdFusion MX Bible (Wiley)
- Frequent contrib. to ColdFusion Dev Journal
- Past accomplishments of note
- Tech Editor, CFDJ (2001-2003)
- Certified Adv CF Developer (4, 5, MX), Instructor
- President, Atlanta ColdFusion User Group
- Frequent speaker UGs, confs worldwide
- New web home at www.carehart.org
- Hosts my blog lists all my past articles,
presentations - Home of UGTV recordings of dozens of CFUG
speakers
4Introduction to Step Debugging
- Understanding interactive debugging
- What can it do for you?
- Step through code line-by-line (where needed)
- View variables, in all scopes, at that point
- Watch particular expressions, to observe changes
- Even change variables on the fly during execution
- And more
- Past debugging solutions (CF4, 5)
- No current or discussed plans for CFMX
- FusionDebug from Intergral
- CFML step debugging for CFMX 6.1/7
5About FusionDebug
- Is an Eclipse (3.1, 3.2) plug-in
- You dont NEED to use Eclipse for editing
- Can continue to edit in DWMX, CF Studio,
HomeSite, etc. - You do need to download Eclipse (free, easy)
- Unless you already have Flex Builder or
CFEclipse, which are also Eclipse plug-ins - Why did they build it atop Eclipse?
- It had Java debugging in it already, so Intergral
could leverage that and add their value in
translating that to CFML. - Easy to install Eclipse, FusionDebug
- Requires just a minor change in JVM config for
CFMX server - Add a couple JVM entries, name a port for
debugger to listen on - You then do a minor setup in Eclipse to enable
debugging against that server - All of the above is well-documented in the
FusionDebug User Guide, free online
6FusionDebug Demo
7Demoed Features
- Enabled debugging, stepping through code
- Enabled watches and setting variables
- can do with right-click on var/expression
- Showed simple cf code (CF Example Apps)
- Set variables on the fly
- Showed query data in variables pane
- Showed CFC-based code (Model Glue)
- Showed scopes available in CFC methods
- var and this scopes
- Showed how stack is interactive
- click to jump to lines in chain above current
instruction - Showed debugging web service code
- Showed debugging Flex apps
8Other Features
- Yes, it can debug code within CFSCRIPT
- And yes, it can debug code within tags like
CFOUTPUT, CFMAIL, CFSAVECONTENT, etc. - You dont need to step through every page to get
to a point deep in a series of pages - Can just set breakpoint in desired file and
request whatever page - FlexBuilder and FusionDebug
- Can work alongside the Flex Debugger to debug any
ColdFusion (.cfc) code being used within a Flex
project - Debugging perspectives switch automatically
between debugging Flex and CFML - Again, can debug CFCs called from Flex even
without using FlexBuilder
9Benefits Over CFDUMP/CFOUTPUT
- Can debug when a CFOUTPUT/CFDUMP may not be
possible - What are some examples?
- CFCOMPONENT/CFFUNCTION OUTPUTfalse
- CFSILENT
- When generating XML
- What other tags may help in the above cases?
- Can debug without having to rely on finding the
output of CFLOG or CFTRACE (or enabling the
latter) - Can debug without needing to change code
- Can debug requests from Flex, Ajax, Flash
Remoting, web services, or CF7 gateways - Can debug when someone besides the developer is
calling a template - Can debug against production
- Can debug on remote machine
10Benefits Over CFDUMP/CFOUTPUT (cont.)
- Can change the value of variables on the fly
during execution - Can debug in situations where a simple
CFOUTPUT/CFDUMP would not suffice (powerful
Variables, Expressions panes) - Can use the debugger to understand the flow of
execution of the request (help newcomers to your
code, or to CFML in general) - Can debug in situations where you don't even know
where in a complex app to try to do CFOUTPUT or
CFDUMP
11Benefits Over CFDUMP/CFOUTPUT (cont.)
- Can view call stack during execution
- Can view the Java classes called to execute your
code - See http//www.fusion-reactor.com/fusiondebug/supp
ort.htmlconfig2 - See more details on all these at
- http//carehart.org/blog/client/index.cfm/2006/9/7
/fusiondebug_part2_why_use_versus_cfdump - And thats not even all of them
- See more at http//www.fusion-reactor.com/fusionde
bug/about.html
12Tips and traps
- Impact of debugging being configured in server
- garbage collection impacted by change made in
jvm.config - Favor Step Over versus Step Into, when on
tags/functions that dont open files - Watch for Stepping in the Stack Trace
- Just means its working
- No way to see output being generated, currently
- CFLOCK and CFTRANSACTION tag impact
- Be careful holding breakpoint within these for
too long (impacts other users in other pages) - More at
- http//carehart.org/blog/client/index.cfm/2006/10/
2/fusiondebug_part4_tips_and_traps
13Troubleshooting
- If a runtime error occurs, FD will also seem to
stop (but error has been sent to the browser) - If debugging just stops, CFMX admins request
timeout may be terminating the page - See Admin Timeout Requests after x seconds
- This is disabled by default in 6.1, enabled by
default in 7 - If you see no CIP moving with debugging
- be sure to open a file (or associate debug
session source code properties) from an Eclipse
project, not from the filesystem (see docs for
steps) - If breakpoints fail to fire as expected
- See http//www.fusion-reactor.com/fusiondebug/supp
ort.htmlbreakpoints4
14Learning More
- Documentation (very good) available online
- www.Fusiondebug.com
- User guide walks through configuration of the CF
Server, Eclipse, and use of FusionDebug - Several Captivate demos
- Available CFML templates to test with
- Great to get started, to work through initial
introductory features and challenges - Rather than jumping into the middle of debugging
a big app as your first test - Ive done a series of blog entries on it
- http//carehart.org/blog/client/index.cfm/fusionde
bug - And have upcoming articles in CFDJ, FAQU
15Pricing, Discounts, Trials
- List price US 299
- Available 10 discount code CFCOMMUNITY
- Special 20 discount code through Oct 2006
GOT2DEBUG - Priced per seat, available volume discounts
- Newly announced Community (Non-commercial)
edition, 99 - More details at
- http//www.fusion-reactor.com/fusiondebug/buy.html
- Available free trial (20 days)
- Ive arranged 2 licenses to give away tonight
16FAQs
- Why isnt Adobe doing this?
- Should they allocate limited development dollars
to add this, or other cooler features that only
they can do? And if they did, would it be free? - Does FusionDebug work with BlueDragon?
- Not currently. They are in talks
- But you could install free Dev edition of CFMX
and debug against that - Does it work with CF4 or 5?
- No, it is specific to CFMX
- Can it work without Eclipse?
- No, it is specific to Eclipse
- Must I use/learn how to use Eclipse?
- Nothing more than what Ive shown here, really
- Must I use/learn how to use CFEclipse?
- No, FusionDebug is not connected to CFEclipse
- You can use your favorite CFML editor to edit
- Just use FD to do debugging
17FAQs
- Does it support debugging Javascript?
Actionscript? Java? - No, thats left to others.
- Eclipse already can debug Java, and FlexBuilder
can debug ActionScript. Other tools offer
Javascript debugging inside Eclipse - JavaScript Eclipse Debugger Plug-in
http//www.myeclipseide.com/ContentExpress-display
-ceid-70.htmljsdebug - ActionScript debugging in FlexBuilder
http//livedocs.macromedia.com/flex/1/flex_builder
_en/wwhelp/wwhimpl/common/html/wwhelp.htm?context
Using_Flex_Builderfilebrady318.htm - How do I get support?
- Intergral offers free email support
support_at_fusion-reactor.com
18Conclusion
- Great solution, finally, for CFML debugging
- Sure, it costs money, but will pay for itself if
youll benefit from debugging - While there are some debugging naysayers, to each
his own - Try it for yourself and see if it doesnt help
- The challenge is simply remembering to use it!
- Intergral support has been great
- Available free support at support_at_fusion-reactor.c
om - Very interested in supporting community
19Questions on presentation
- Charlie Arehart
- charlie_at_carehart.org
- Id really appreciate your feedback
- http//carehart.org/feedback
- Also available for setup and implementation
consulting - As well as other developer productivity coaching,
system admin and tuning support, and more - Remote or on-site
- Giveaway of 2 licenses