1 / 42

CF Pest Control

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 “

jericho
Download Presentation

CF Pest Control

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. Types of bugs • Syntax Error • Run-Time Errors • Logical Errors

  4. Types of bugs - Syntax Errors • Syntax Error Example <CFSET ClientName = “Shlomy Gantz”> <CFSET URLstr = URLstr & urlendcodedformat(ClientName)>

  5. 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>

  6. 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>

  7. Other things that can go wrong • Database connection (ODBC,MDAC …) • Cold Fusion server • Web Server • OS • Hardware

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

  9. “Debugger’s Block” • If all else fails • … and if that doesn’t work

  10. Cold Fusion Administrator

  11. Cold Fusion Administrator

  12. Enable CFML stack trace • CF tracks what tags have run during page process. • Can be used either through CFTRY/CFCATCH or the HomeSite+ Debugger

  13. Report Execution Times

  14. Show Variables • Show all variables processed by ColdFusion: • Application • Cookie • Server • CGI • Form • Session • Client • Request • URL

  15. Detail View • Breakdown of all templates run during a page process. • Processing time for each template

  16. Database Activity • Query Name • RecordCount • Processing Time • Query Executed

  17. Enable Performance Monitoring

  18. 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

  19. 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

  20. Log Files • Easier Log File Administration

  21. Log Files • Easier Log Analysis

  22. System Probes • Monitor your ColdFusion Applications

  23. Code Analyzer

  24. Debugging with HomeSite+ • Setting up Development Mapping.

  25. Using the interactive debugger

  26. 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>

  27. <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>

  28. <CFABORT> & <CFOUTPUT> • Following the flow <CFIF …………> Step 1 <CFIF ………………..> Step 1.1 <CFELSE> Step 1.2 </CFIF> <CFELSE> Step 2 </CFIF>

  29. Debugging in CFML • <cfquery debug> • <cfstoredproc debug=“yes|no”> • <cfsetting showdebugoutput=“yes/no”>

  30. Debugging CF applications • <CFERROR> • <CFTHROW> • <CFRETHROW> • <CFCATCH><CFTRY> • <CFLOG> • <CFTRACE>

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

  32. <CFTRY><CFCATCH> • <CFTRY> • ... Add code here • <CFCATCH TYPE="exceptiontype"> • ... Add exception processing code here </CFCATCH> • ... Additional CFCATCH blocks go here </CFTRY>

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

  34. <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#">

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

  36. IsDebugMode() • <cfif IsDebugMode()> <h3>Debugging is set in the ColdFusion Administrator</h3> <cfelse> <h3>Debugging is disabled</h3> </cfif>

  37. 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'."

  38. CFDUMP • Read your application logs regularly <CFDUMP VAR="#myVar#">

  39. Debugging Databases • SQL query analyzer

  40. Common Mistakes “So what are we doing wrong?”

  41. 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

  42. QA

More Related