The Art of Debugging Shlomy Gantz 02/13/01MDCFUG
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Introduction - Famous Last words “…if debugging is defined as the art of taking bugs out of a program, programming must be putting them in…” “..It’s not a bug, It’s a feature “ (Microsoft)
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Types of bugs Syntax Error Run-Time Errors Logical Errors
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Types of bugs - Syntax Errors Syntax Error Example View Example View Example
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Types of bugs - Run-Time Errors Run-Time Error Example SELECT SUM(Salary) AS TotalSalary, COUNT(Emp_ID) as NumOfEmployees FROM AnnualSalary WHERE SALARY > #AVGSalary# View Example View Example
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Types of bugs - Logical Errors Logical Error example #YesNoFormat(ShlomyExists_YN)# View Example View Example
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Other things that can go wrong Database connection (ODBC,MDAC …) Cold Fusion server Web Server OS Hardware
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Debugging Steps Plan Back-up Isolate Find The error Fix - Don’t patch Look for similar Document
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 “Debugger’s Block” If all else fails … and if that doesn’t work
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Cold Fusion Administrator
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Enable Performance Monitoring View Example View Example
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Enable CFML stack trace CF tracks what tags have run during page process. Can be used either through CFTRY/CFCATCH or the Studio Debugger Debugger
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Show Variables Show all variables processed by ColdFusion: FORM FORM URL URL CGI CGI Cookie Cookie
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Show Processing Time Show how long, in milliseconds, it takes for a page process to run to completion
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Detail View Breakdown of all templates run during a page process. Proccessing time for each template
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Show SQL and Datasource Name Shows SQL Statement & DSN in error messages
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Show Query Information Query Name RecordCount Processing Time Query Executed
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Display Template Path in Error Msg Show the name of the actual template in which with the error occurred
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Restrict Debug Access By Default All when debugging is turned on all users can see debug information. You can restrict access to the debugging info through this feature by IP address
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Debugging with studio Setting up Development Mapping.
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Using the interactive debugger
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Debugging CF applications Show your variables (not only once) Create breakpoints and Follow the flow Use Exception handling Look at your application logs CF_ObjectDump
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 & Using CFABORT to create breakpoints Select * from Contacts WHERE Active_YN=1 #getContacts.recordcount#
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 & Following the flow Step 1 Step 1.1 Step 1.2 Step 2 View Example View Example
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Debugging in CFML View Example View Example View Example View Example
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Debugging CF applications
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 ... Add code here ... Add exception processing code here ... Add exception processing code here ... Additional CFCATCH blocks go here ... Additional CFCATCH blocks go here
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Application Logs Read your application logs regularly Error","TID=199","07/27/00","13:32:35"," ","Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)","An error has occurred. HTTP/ Object Not Found" "Error","TID=199","07/27/00","13:32:45"," ","Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)","Error resolving parameter SLOT_IDColdFusion was unable to determine the value of the parameter. This problem is very likely due to the fact that either: You have misspelled the parameter name, or You have not specified a QUERY attribute for a CFOUTPUT, CFMAIL, or CFTABLE tag.The error occurred while evaluating the expression: #slot_id# The error occurred while processing an element with a general identifier of (#slot_id#), occupying document position (4:12) to (4:20) in the template file D:\wwwroot\cfun2000\Examples\JS\JSexample1_CFMW\edit_def.cfmThe specific sequence of files included or processed is:D:\WWWROOT\CFUN2000\EXAMPLES\JS\JSEXAMPLE1_CFMW\EDIT_DEF.CFM.Date/Time: 07/27/00 13:32:45Browser: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)Remote Address: HTTP Referer: D:\wwwroot\cfun2000\Examples\JS\JSexample1_CFMW\edit_def.cfm" "Warning","TID=152","07/27/00","15:07:21","In a CF_TagName construct custom tag file 'C:\CFUSION\CustomTags\Pages.cfm' will occlude custom tag file 'C:\CFUSION\CustomTags\cf_pages\Pages.cfm'." "Warning","TID=152","07/27/00","15:07:21","In a CF_TagName construct custom tag file 'C:\CFUSION\CustomTags\Pages.cfm' will occlude custom tag file 'C:\CFUSION\CustomTags\cf_pages\images\Pages.cfm'." View Example View Example
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 CF_Objectdump Read your application logs regularly <CF_ObjectDump Object="#Object#" Deserialize="yes|no" > View Example View Example
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Debugging Databases SQL query analyzer
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Debugging JavaScript “Microsoft Script debugger”/“Netscape JavaScript Debugger” Using alert() and return false;
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Debugging flash No debug output simulated flash requests output in flash
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Tools BugTraq BugTraq Automatic Code Generation Tools CodeSaver / CodeCharge / CommerceBlocks CodeSaver / CodeCharge / CommerceBlocks CodeSaverCodeChargeCommerceBlocks CodeSaverCodeChargeCommerceBlocks
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 What’s new in 5.0 Easier Log Analysis
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 What’s new in 5.0 New options on CF Admin debug setting
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 Thank You Michael Dinowitz, Emily Kim, Michael Imhoff and Abraham Lloyd. … Michael Smith
“The Art of Debugging - Copyright Shlomy Gantz 2001 – 03/13/01 QA Shlomy Gantz