42
CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark [email protected]

CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark [email protected]

Embed Size (px)

Citation preview

Page 1: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

CF Pest Control

By Shlomy Gantz

President, BlueBrick Inc.

Presented by

Sandra Clark

[email protected]

Page 2: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

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

Page 3: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Types of bugs

• Syntax Error

• Run-Time Errors

• Logical Errors

Page 4: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Types of bugs - Syntax Errors

• Syntax Error Example

<CFSET ClientName = “Shlomy Gantz”>

<CFSET URLstr = URLstr & urlendcodedformat(ClientName)>

Page 5: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Types of bugs - Run-Time Errors

• Run-Time Error Example

<CFQUERY NAME=“GetOverPaidEmp” Datasource=“Payroll”>

SELECT SUM(Salary) AS TotalSalary,

COUNT(Emp_ID) as NumOfEmployees

FROM AnnualSalary

WHERE SALARY > 100000

</CFQUERY>

<CFSET AVGSalary = GetOverPaidEmp.TotalSalary/GetOverPaidEmp.NumOfEmployees>

<CFOUTPUT>#AVGSalary#</CFOUTPUT>

Page 6: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Types of bugs - Logical Errors

• Logical Error example

<CFSET MyList=“Shlomy,Michael,Emily,Abraham”>

<CFSET ShlomyExists_YN = listfind(MyList,”shlomy”)>

<CFOUTPUT>#YesNoFormat(ShlomyExists_YN)#</CFOUTPUT>

Page 7: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Other things that can go wrong

• Database connection (ODBC,MDAC …)• Cold Fusion server • Web Server• OS• Hardware

Page 8: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Debugging Steps

• Plan• Back-up• Isolate• Find The error• Fix - Don’t patch• Look for similar• Document

Page 9: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

“Debugger’s Block”

• If all else fails

• … and if that doesn’t work

Page 10: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Cold Fusion Administrator

Page 11: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Cold Fusion Administrator

Page 12: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Enable CFML stack trace

• CF tracks what tags have run during page process.

• Can be used either through CFTRY/CFCATCH or the HomeSite+

Debugger

Page 13: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Report Execution Times

Page 14: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Show Variables

• Show all variables processed by ColdFusion:

– Application– Cookie– Server – CGI– Form– Session – Client– Request– URL

Page 15: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Detail View

• Breakdown of all templates run during a page process.

• Processing time for each template

Page 16: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Database Activity

• Query Name • RecordCount• Processing Time • Query Executed

Page 17: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Enable Performance Monitoring

Page 18: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Enable Robust Exception Information

• physical path of template • URI of template • line number and line snippet • SQL statement used (if any) • Data source name (if any) • Java stack trace

Page 19: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Debugging IP Addresses

• 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

Page 20: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Log Files

• Easier Log File Administration

Page 21: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Log Files

• Easier Log Analysis

Page 22: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

System Probes

• Monitor your ColdFusion Applications

Page 23: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Code Analyzer

Page 24: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Debugging with HomeSite+

• Setting up Development Mapping.

Page 25: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Using the interactive debugger

Page 26: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Debugging CF applications

• Show your variables (not only once)• Create breakpoints and Follow the flow• Use Exception handling to automatically

alert when errors occur• Look at your application logs• <CFDUMP>

Page 27: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

<CFABORT> & <CFOUTPUT>

• Using CFABORT to create breakpoints

<cfinclude template="Header.cfm">

<cfquery datasource="#dsn#" name="getContacts"> Select * from Contacts WHERE Active_YN=1 </cfquery>

<cfoutput>#getContacts.recordcount#</cfoutput> <cfabort>

Page 28: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

<CFABORT> & <CFOUTPUT>

• Following the flow <CFIF …………> Step 1

<CFIF ………………..> Step 1.1

<CFELSE>Step 1.2</CFIF>

<CFELSE> Step 2 </CFIF>

Page 29: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Debugging in CFML

• <cfquery debug>

• <cfstoredproc debug=“yes|no”>

• <cfsetting showdebugoutput=“yes/no”>

Page 30: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Debugging CF applications

• <CFERROR>• <CFTHROW>• <CFRETHROW>• <CFCATCH><CFTRY>• <CFLOG>• <CFTRACE>

Page 31: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

<CFERROR>

• <CFERROR TYPE="Request" or "Validation" or "Monitor" or "Exception" TEMPLATE="template_path" MAILTO="email_address" EXCEPTION="exception_type">

Page 32: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

<CFTRY><CFCATCH>

• <CFTRY>• ... Add code here• <CFCATCH

TYPE="exceptiontype"> • ... Add exception processing code

here </CFCATCH> • ... Additional CFCATCH blocks go

here </CFTRY>

Page 33: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

<CFTHROW><CFRETHROW>

• <CFTHROW TYPE="exception_type" MESSAGE="message" DETAIL="detail_description" ERRORCODE="error_code" EXTENDEDINFO="additional_information">

Page 34: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

<CFLOG>

• <cflog type="Error" file="myapp_errors" text="Exception error -- Exception type: #error.type# Template: #error.template#, Remote Address: #error.remoteAddress#, HTTP Rerference: #error.HTTPReferer# Diagnositcs: #error.diagnostics#">

Page 35: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

<CFTRACE>

• <cftrace abort = "Yes or No" category = "string" inline = "Yes or No" text = "string" type = "format" var = "variable_name" >

Page 36: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

IsDebugMode()

• <cfif IsDebugMode()> <h3>Debugging is set in the

ColdFusion Administrator</h3> <cfelse> <h3>Debugging is disabled</h3> </cfif>

Page 37: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Application Logs

• Read your application logs regularly Error","TID=199","07/27/00","13:32:35","127.0.0.1","Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)","An error has occurred. HTTP/1.0 404 Object Not Found“

"Error","TID=199","07/27/00","13:32:45","127.0.0.1","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.cfmThespecific sequence of files included or processed s:D:\WWWROOT\CFUN2000\EXAMPLES\JS\JSEXAMPLE1_CFMW\EDIT_DEF.CFM &nbsp;&nbsp;&nbsp;&nbsp; .Date/Time: 07/27/00 13:32:45Browser: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)Remote Address: 127.0.0.1HTTP Referer: http://127.0.0.1/cfun2000/Examples/JS/JSexample1_CFMW/EDIT.HTMLTemplate: 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'."

Page 38: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

CFDUMP

• Read your application logs regularly

<CFDUMP VAR="#myVar#">

Page 39: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Debugging Databases

• SQL query analyzer

Page 40: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Common Mistakes

“So what are we doing wrong?”

Page 41: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

Tools & Techniques

• <CFMAIL> Alerts• Monitoring Tools (

http://www.pingalink.com )• Testing Tools (

http://www.opendemand.com )• BugTraq• Automatic Code Generation Tools

– CodeSaver / CodeCharge / CommerceBlocks

• LoRCAT

Page 42: CF Pest Control By Shlomy Gantz President, BlueBrick Inc. Presented by Sandra Clark slclark@shayna.com

QA