190 likes | 305 Views
Step Through Your CFML Code With FusionDebug. Charlie Arehart charlie@carehart.org. Topics. Introduction to Step Debugging FusionDebug Features FusionDebug Demo Benefits Over CFDUMP/CFOUTPUT Other Features, Learning More, Gotchas, Pricing, FAQs, etc. About Your Speaker.
E N D
Step Through Your CFML Code With FusionDebug Charlie Arehartcharlie@carehart.org
Topics • Introduction to Step Debugging • FusionDebug Features • FusionDebug Demo • Benefits Over CFDUMP/CFOUTPUT • Other Features, Learning More, Gotchas, Pricing, FAQs, etc.
About 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, conf’s 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
Introduction 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+
About FusionDebug • Is an Eclipse (3.1, 3.2) plug-in • You don’t 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
FusionDebug Demo • Let’s see it in action
Demoed 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
Other Features • Yes, it can debug code within CFSCRIPT • And yes, it can debug code within tags like CFOUTPUT, CFMAIL, CFSAVECONTENT, etc. • You don’t 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
Benefits Over CFDUMP/CFOUTPUT • Can debug when a CFOUTPUT/CFDUMP may not be possible • What are some examples? • CFCOMPONENT/CFFUNCTION OUTPUT=false • 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
Benefits 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
Benefits 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/support.html#config2 • See more details on all these at: • http://carehart.org/blog/client/index.cfm/2006/9/7/fusiondebug_part2_why_use_versus_cfdump • And that’s not even all of them • See more at http://www.fusion-reactor.com/fusiondebug/about.html
Tips 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 don’t open files • Watch for “Stepping” in the Stack Trace • Just means it’s 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
Troubleshooting • If a runtime error occurs, FD will also seem to stop (but error has been sent to the browser) • If debugging just stops, CFMX admin’s “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/support.html#breakpoints4
Learning 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 • I’ve done a series of blog entries on it • http://carehart.org/blog/client/index.cfm/fusiondebug • And have upcoming articles in CFDJ, FAQU
Pricing, 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) • I’ve arranged 2 licenses to give away tonight
FAQs • Why isn’t 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 I’ve 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 • …
FAQs • Does it support debugging Javascript? Actionscript? Java? • No, that’s 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.html#jsdebug • ActionScript debugging in FlexBuilder: http://livedocs.macromedia.com/flex/1/flex_builder_en/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Using_Flex_Builder&file=brady318.htm • How do I get support? • Intergral offers free email support: support@fusion-reactor.com
Conclusion • Great solution, finally, for CFML debugging • Sure, it costs money, but will pay for itself if you’ll benefit from debugging • While there are some debugging naysayers, to each his own • Try it for yourself and see if it doesn’t help • The challenge is simply remembering to use it! • Intergral support has been great • Available free support at support@fusion-reactor.com • Very interested in supporting community
Questions on presentation • Charlie Arehart • charlie@carehart.org • I’d 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