CF debugging currently means adding debug statements. This is tedious and can lead to embarrassing debug output being left in your production code. In many cases code cannot be changed without affecting the way it works and must be retested after the debugging statements have been removed. There are often times when you simply CAN’T change code to insert debugging output statements, for example when you don’t have write access to the code! FusionDebug does not require that you edit the code, saving you time, improving quality and letting you debug even when code changes are not possible.
FusionDebug will let you debug all of your CF code. There are many places in CF code where CFOUTPUT and CFDUMP simply cannot be used, for example inside CFSILENT, inside CFCOMPONENTs and CFFUNCTIONs when the output attribute is set to false, or when generating XML, PDF, image or many other content types. CFOUTPUT and CFDUMP are also very limited in what they can show you. FusionDebug lets you examine every scope, variable and expression at any point in you code without code changes and the associated recompiling and rerunning.
FusionDebug can be used to debug requests from Flex, Ajax, Web Services and Flash Remoting. FusionDebug can intercept a call from any kind of client that makes a request to a ColdFusion page or CFC.
The value of variables can be changed on-the-fly, in running code, and can immediately influence the behavior of your application. This has many uses, including testing the flow of code during development without setting up complex test cases.
FusionDebug is NOT limited to only debugging what you as a developer can browse yourself. FusionDebug can intercept and show you the step-by-step execution of any template or CFC (or custom tag, or included file) run by anyone. This allows, for example, a customer to recreate their own case in their own browser, while you place breakpoints to isolate the problem.
Often the challenges you face are ones that you can’t recreate in your development environment. FusionDebug will let you debug a remote server (production) with the real end user running the exact request causing the problem you want to debug. What’s more, production systems normally cannot be altered with intrusive output and dump statements: FusionDebug lets you gain valuable insight into real production problems without the necessity of recreating the same environment in test.
FusionDebug gives you a clear visual representation of the flow of a request. Like us, you’ve probably looked through some code and wondered which part of an IF clause executed, or how many times a loop iterated, or indeed if your page included a file, custom tag, or used a method in a CFC. Using FusionDebug stepping, you can instantly see the flow of execution for any request.
FusionDebug lets you see inside complex applications and frameworks. It’s common for complex applications and frameworks to access hundreds of files during a request. It can be very difficult to interpret debug logs from such large applications, so FusionDebug allows you to create a breakpoint at the exact point in the code that you want to debug and let you take control.
“Duck” or Dynamic typing is a popular way to write CF code, but it can be difficult to debug due to its dynamic nature. FusionDebug lets you stop the code and examine exactly which CFCs are being used.
CFLOCK, CFTRANSACTION and many other CF tags can lead concurrency issues. Using FusionDebug, it’s easier to shed light on these difficult issues. In fact, every page is a thread, and we can easily forget that pages can interfere with each other. With FusionDebug you can stop multiple pages running in parallel, helping to locate and eliminate deadlock conditions.
Don’t worry if you don’t care for Eclipse. You don’t have to use FusionDebug or Eclipse to edit pages, or change your development platform. You can still develop with Dreamweaver, CF Studio, HomeSite+, CFEclipse, or whatever your favorite editor happens to be, and jump into FusionDebug whenever you need to debug a problem. FusionDebug is able to use your files from whatever software you used to create them.
Traditional CF debugging output shows at the end of the page request what files were called to run the entire request. It doesn’t really help you find out how each template was used during the request – simply that it was called. In FusionDebug, while you’re suspended on a breakpoint, you can easily use the stack trace to see what templates and CFCs were used to get to that point.
FusionDebug lets you see inside CFCs and the entire inheritance tree. CFCs can be pretty complex to debug; and with lots of inheritance it’s very hard to understand exactly what is being called where. With FusionDebug’s dynamic introspection of a CFC you can see what’s really going on.