WEEK 3: Workshop - Debug Mode

DECIPHERING YOUR OBJECT ERROR MESSAGE

The Object Error Message looks horrendous and confusing at first glance but if we break it into sections you'll find it's pretty straight forward. For the most part you'll not need to look below the first part of the first section. Here's an example of it:.

    An error occurred in object "user00000 - Bob" #105,
    Too many iterations.
    Build: Sep 25 2003, 14:23:46
    Object id: 105 name: user00000 - Bob
    Stack size: 8
    Error: Too many iterations.
    Iterations: 196150
    Frame 7:
    Stack Object id: 248
    Node: 1
    Tree: id 321 name 'Is lot a Residential Lot?' version 4
    from .\gamedata\global\global
    Prim state: 0
    Params: Locals: 87

The first "Frame" listed is always the frame the error took place in.

The "Node" means line within the BHAV that returned the error. The phrase is a little odd until we remember that the folks at Maxis use flowcharts instead of line coding.

The "Tree: id" is which BHAV you'll need to look in.

    An error occurred in object "user00000 - Bob" #105,
    Too many iterations.
    Build: Sep 25 2003, 14:23:46
    Object id: 105 name: user00000 - Bob
    Stack size: 8
    Error: Too many iterations.
    Iterations: 196150
    Frame 7:
    Stack Object id: 248
    Node: 1
    Tree: id 321 name 'Is lot a Residential Lot?' version 4
    from .\gamedata\global\global
    Prim state: 0
    Params: Locals: 87

The "Object id" is the "offending object" but it may not be the one that really has the error because an object can push an interaction onto another object (like a sim) or be accessing a BHAV from another object (like a global). One can usually look for that info in the "from" line but as this example shows that may not tell us which object actually has the code that needs fixing.

The sure way of telling which object has the code that needs fixing is the Stack Object id: ### (248 in this example). If you scroll waaay down you'll spot a list of all of the objects on the lot (more than just the ones you can see but this is certainly one tool that can be used to compile a shopping list) and you'll find the object listed at that number:

    247 = rvn - Dance Tile - on/off White
    248 = Television - Expensive - Left
    250 = Television - Expensive - Right
    251 = Gift - Inventory - Gargoyle

The Error type itself tends to be a little on the generic side but as you work with them you begin to figure out what is the most likely cause that type of error. In this particular case I have "too many iterations". I have, from experience, learned that this usually means I have a loop going on where it should not be. I'll have line one go to line two, then accidentally have line two go to line 2. Or line one. Or something like that. It loops around a bunch of times trying to find a way out and then freaks out and we have an error.

    An error occurred in object "user00000 - Bob" #105,
    Too many iterations.
    Build: Sep 25 2003, 14:23:46
    Object id: 105 name: user00000 - Bob
    Stack size: 8
    Error: Too many iterations.
    Iterations: 196150
    Frame 7:
    Stack Object id: 248
    Node: 1
    Tree: id 321 name 'Is lot a Residential Lot?' version 4
    from .\gamedata\global\global
    Prim state: 0
    Params: Locals: 87

Our screenshot earlier mentioned an "undefined transition" There are a few causes for that. One example would be when line 2 tried to go to line 33 when there is no line 33. This error also shows up when a BHAV is looking for a global line that does not exist, a common problem caused by expansion packs altering objects.

Example: cash registers cloned after Vacation is installed look to see if they are on a vacation lot using Global BHAV 324. But anyone with Hotdate alone will only have up to Global BHAV 320 and so the cash registers don't work for them.

Until we are familiar with the various types of error we will be using debug mode to pinpoint WHERE the error is and trying to figure out WHAT the error is on our own.

~Raeven