The Debugging Process

Read Error Messages

While it might sound obvious, one of the most helpful things you can do is to read the error message in the Inspector carefully (the temptation is to rush right ahead with a stack trace).

When an exception occurs and you have breakOnThrows set, the Inspector will display a description of the error, and possibly some additional information. Here's an example:

Exception |evt.ex.fr.type;type.ref.frame|: [-48404] Expected a number. Got: {value: NIL}
In this error, you can see that a number was expected. Most likely, the error occurred during an arithmetic operation (the most obvious operations requiring numbers). The other piece of information is that instead of a number it got a nil value. Thus, the code that was executing used a nil value instead of a number. At this point you might consider trying to track down which variables are set to nil (perhaps with the prudent use of printing variable values).

In a similar vein, the Inspector might display:

Exception |evt.ex.fr.type;type.ref.frame|: [-48404] 
Expected a number. Got: {value: "hello"}
Here, the same error has occurred, but the value is now "hello" rather than the desired integer.

Here's a final example:

Exception |evt.ex.fr.intrp;type.ref.frame|: [-48809] 
Undefined method "Foo" {Symbol: Foo}
In this case, the code tried to call a method, Foo, which didn't exist.


An online version of Programming for the Newton using Macintosh, 2nd ed. ©1996, 1994, Julie McKeehan and Neil Rhodes.

Last modified: 1 DEC 1996