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
- President, Atlanta ColdFusion User Group
- Past accomplishments of note
- Tech Editor, CFDJ (2001-2003)
- Certified Adv CF Developer (4, 5, MX), Instructor
- Frequent speaker UGs, confs worldwide
4Introduction to Step Debugging
- Understanding interactive debugging
- What can it do for you?
- 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. - Do need to download Eclipse
- or use with Flex Builder, which is Eclipse or
CFEclipse if you have it installed already - 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 Features
- Can step through code, including tags, functions,
CFCs, includes, custom tags, and so on - As well as stepping through a page, you can also
Step Into (or out of) sub tags, CFC calls and
function calls - Can list all variable and scopes
- View all scopes available to your page and view
anything stored within. See values change as you
step through page - Expression Watcher
- Create arbitrary expressions, from simply
outputting a variable to showing the result of an
if condition and the Expression Watcher will
dynamically evaluate them - Query Support
- Open queries to see row data, column names and
data types. Also, when looping through a query
the Current Query feature lets you know exactly
which row youre on
7FusionDebug Demo
8Demo 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
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, or as web
service - Can debug when someone besides the developer is
calling a template - Can debug against production
- Can debug on remote machine
- Can change the value of variables on the fly
during execution
10Benefits Over CFDUMP/CFOUTPUT
- 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
- 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 - And thats not even all of them
12Other Features
- Flex 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 - Can also debug CFCs called from Flex even without
using FlexBuilder - Can debug CFCs called from Flex, Flash Remoting,
Ajax, web services, or CFMX gateways (SMS, event,
etc.) as they call CFCs
13Learning 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 started a series of blog entries on it
- http//carehart.org/blog/client/index.cfm/fusionde
bug
14Gotchas Using FD
- Breakpoints remain alive for any user (not just
debugging developer) if debug session active - If any user runs the requestthey will see page
hang - Only developer with FD open sees its stopped on
line - This is unlike CF4/5 debugging, so be aware
- Can use skip all breakpoints option to
temporarily disable in multi-user environments - Be careful holding breakpoint within CFLOCK or
CFTRANSACTION tags for too long (impacts other
users in other pages) - Can set breakpoint on non-CFML or blank line, but
wont fire - May not fire if on CFSCRIPT or CFRETURN and in
some other instances - See http//www.fusion-reactor.com/fusiondebug/sup
port.htmlbreakpoints4 - Can try to set variable for query column but
wont take - When setting variable that can be evaled as
expression (555-0002), will do math - so surround it in quotes to coerce as string
15Gotchas FD Setup
- FD has only minor impact when debugging not
active, due to changes made in jvm.config - So can run in production, but perhaps should
think twice - When setting port in Debug settings, it should be
that for FD, not the web server serving CFML
pages - If using FusionReactor (Intergrals CF monitor
tool), should disable crash protection feature - If you CFEclipse and dont see line pointer
highlighted, can configure that - See http//www.fusion-reactor.com/fusiondebug/supp
ort.htmlcfeclipse2 - Firewalls or port restrictions can get in the way
sometimes
16Troubleshooting
- If you see no CIP moving with debugging
- be sure to associate debug session source code
properties with a project, not the filesystem
(see docs for steps) - If debugging just stops, you may have the CFMX
page request timeout thats killing the page - See Admin Timeout Requests after x seconds
- This is disabled by default in 6.1, enabled by
default in 7 - If a runtime error occurs, FD will also seem to
stop (but error has been sent to the browser) - A few others listed in docs (above items are not,
currently)
17Pricing, Discounts, Trials
- List price US 299
- Available 10 Discount Code CFCOMMUNITY
- Priced per seat, available volume discounts
- Available free trial (20 days)
- Ive arranged 2 licenses to give away tonight
18FAQs
- 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
- How do I get support?
- Intergral offers free email support
support_at_fusion-reactor.com - Whats with the name/spelling Intergral? ?
- Formed from Internet and Integration
19Conclusion
- Great solution, finally, for CFML debugging
- Sure, it costs money, but will pay for itself if
youll benefit from debugging - Some debugging naysayers. To each his own
- Intergral support has been great
- Available free support at support_at_fusion-reactor.c
om - Very interested in supporting community
20Questions on presentation
- Charlie Arehart
- charlie_at_carehart.org
- 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