Title: Debugging and Ajax
1Debugging and Ajax
- Session 7
- INFM 718N
- Web-Enabled Databases
2Agenda
3- Relational normalization
- Structured programming
- Software patterns
- Object-oriented design
- Functional decomposition
Client Hardware
Web Browser
Database
Server Hardware
4Types of Errors
- Syntax errors
- Detected at compile time
- Run time exceptions
- Cause system-detected failures at run time
- Logic errors
- Cause unanticipated behavior (detected by you!)
- Design errors
- Fail to meet the need (detected by stakeholders)
5Debugging Syntax Errors
- Focus on the first error message
- Fix one thing at a time
- The line number is where it was detected
- It may have been caused much earlier
- Understand the cause of warnings
- They may give a clue about later errors
- If all else fails, comment out large code regions
- If it compiles, the error is in the commented part
6Run Time Exceptions
- Occur when you try to do the impossible
- Use a null variable, divide by zero,
- The cause is almost never where the error is
- Why is the variable null?
- Exceptions often indicate a logic error
- Find why it happened, not just a quick fix!
7Debugging Run-Time Exceptions
- Run the program to get a stack trace
- Where was this function called from?
- Print variable values before the failure
- Reason backwards to find the cause
- Why do they have these values?
- If necessary, print some values further back
8Logic Errors
- Evidenced by inappropriate behavior
- Cant be automatically detected
- Inappropriate is subjective
- Sometimes very hard to detect
- Sometimes dependent on user behavior
- Sometimes (apparently) random
- Cause can be hard to pin down
9Debugging Logic Errors
- First, look where the bad data was created
- If that fails, print variables at key locations
- if (DEBUG) echo \foobar foobar
- Examine output for unexpected patterns
- Once found, proceed as for run time errors
- define (DEBUG, FALSE) to clean the output
10(No Transcript)
11(No Transcript)
12Ajax Applications
- Google Maps
- http//maps.google.com
- Google Suggest
- http//www.google.com/webhp?complete1hlen
- Sajax Tables
- http//labs.revision10.com/?p5
- Sajax
- http//www.modernmethod.com/sajax/
13Sajax Example
lt? require("Sajax.php") function multiply(x,
y) return x y sajax_init() //
sajax_debug_mode 1 sajax_export("multiply")
sajax_handle_client_request() ?gt
14lthtmlgtltheadgt lttitlegtMultiplierlt/titlegt ltscriptgt
lt? sajax_show_javascript() ?gt function
do_multiply_cb(z) document.getElementById("z")
.value z function do_multiply() // get
the folder name var x, y x
document.getElementById("x").value y
document.getElementById("y").value x_multiply(x
, y, do_multiply_cb) lt/scriptgt lt/headgt ltbodygt
ltinput type"text" name"x" id"x" value"2"
size"3"gt ltinput type"text" name"y" id"y"
value"3" size"3"gt ltinput type"text"
name"z" id"z" value"" size"3"gt ltinput
type"button" name"check" value"Calculate" onc
lick"do_multiply() return false"gt lt/bodygtlt/html
gt
15Code Walkthrough
- Syntax
- How layout helps reading
- How variables are named
- How strings are used
- How forms are used
- How output is created
- MySQL Integration
- Opening a database
- Handling slashes
- Posing queries
- Using result sets
- Structured Programming
- How things are nested
- How arrays are used
- Modular Programming
- Functional decomposition
- How functions are invoked
- How arguments work
- How scope is managed
- How errors are handled
- How results are passed