Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
Now that you have the debugger for ColdFusion enabled, it's time to start debugging some code in CF Builder. In the Chapter 6 folder, I'm going to switch back to my regular perspective so I can see it. I'll open up index.cfm. Here, I'm setting up an array and then just looping through a list of numbers and dividing the number 1 by each number and then pending the results to my array. If I preview this in my browser here, you'll see I just get an array with each of the results as a separate node in that array.
If I switch back to the source code and set one of these nodes to be the number 0 and run my code again, end up getting a Division by zero error, but I can't actually tell which value in my list caused that problem. To figure out which node in my list is the culprit, I'm going to switch over to the ColdFusion Debugging perspective. In the ColdFusion Debugging perspective, I know that my error is happening on line 3. I know that because here in my Console I can see, it shows the Division by zero error on line 3.
So, to find out what's happening on line 3, I'm going to create a breakpoint by double-clicking on the line number. You'll see it's added a small circle here to show me there's a breakpoint at that line and as I run the ColdFusion debugger, ColdFusion is going to stop on line 3 and tell me all of the values for every variable on my page at that point in time. So, to start the debugger, we'll choose Down arrow next to my little bug, choose Debug As > ColdFusion Application.
My browser pops open and if I switch over to my browser, you can see that it's continually loading. CF Builder is using this browser session so that it can keep track of the variables and then in the Variables section, I can see the value in the Divisor and the value in my Results array. Now to continue process into the next line, I can click the Step Over button and as you can see, I have a little arrow here in my line number, so it shows me which line is getting processed. If I expand my Variables section, I can see that the divisor is still 8 but I now have an entry in my Results array.
I'll step over again. I can see that the divisor is now 7. Step over again and now my Results array has two values in it. So, every time I click Step Over, it's jumping to the top of the loop then stopping on line 3 to tell me everything that's currently set at that point in time and then goes back to the loop. So, I'll click Step Over again, and now I'll fix and now my debugger has stopped working and if I look down here in my console, I can see that the request has exceeded the allowable time limit.
Basically, I took too long to figure out what the problem was with my code. What I need to do now is to stop the debugger and I've terminated processing of that thread and I actually need to tell my page that I need a little bit more time to figure out what's going on. So, we'll use cfsetting and we'll set our requesttimeout to say 240 seconds. That should give me plenty of time to step to the code and figure out exactly what's happening. But this time, I want to be able to more easily see the value of the divisor as I go.
So, I'm going to click on the Expressions view here and I can set up a watch expression that will allow me to see the value of a specific variable at any point in time without having to filter through my Variables list to find it. If I had 10, 15, 20 different variables defined on this page, it'll be hard to pick out the Divisor variable. So, I'm going to click my little Create new watch expression button and I just need to type in the name of the variable that I want to watch. I'll click OK and now I can see that variable set up in the Expressions list.
So, I'm going to go back to the code editor and then we will debug our application again. My browser pops back up. It sends me back to CF Builder and now I can see that the value of the divisor is 8. If I click back on the Variables view, I can see the same thing I saw before. I'll step over 8, 7, now the math for the value 7 has been performed. We'll click on Expressions and we can see that the divisor is 7 there as well.
Click Step Over again, go to the number 6, one more time and go to the number 0, Step Over once more and now I get my division by zero is not allowed. So, that allowed me to see the Divisor variable for every single loop that got processed, so I can finally find out which item in my list was causing the problem. So, now that I know what the issue is, I can take out the problem variable, save my file. I can remove my breakpoint.
I'll run the code one more time. To do that, I need to first terminate the processing. So, you can't open one debugging session while another is up and running. Click in the Editor again and debug one more time, and we can see that the file processed correctly. So, as you can see, the ColdFusion Debugger gives you a lot more detailed view into what your code is doing as it's doing it, the Variables view will show you record sets and column names and column values, add breakpoints and step over lines as you go through the application to quickly find and correct missteps in your code.
Get unlimited access to all courses for just $25/month.Become a member