Starting Point for Debugging Snapper-problems
This article aims to give you some help on debugging a Snapper-related crash where it's not obvious from the stack trace what the problem is.
cm.core.session.mainSpace.dbg_seriouslySeriousCheckConsistency();
It will give you information about how the Snappers in your drawing's main space (you can of course call it for other spaces as well) are connected and referenced to each other.
The sections below will then give you some hints on what to look for when interpreting the output from the consistency checks.
Snapper is *dead*
You will usually see in the stack dump in the error log that the snapper is dead since the default toS()
implementation prints the text *dead* on dead snappers, like this:
MySnapperClass(*dead* (id=-28))
What Does It Mean That the Snapper Is *dead*?
The most common cause when there are dead snappers in the drawing is that you have a snapper referencing other snappers in other ways than through connectors.
Snappers are only supposed to reference each other through connectors. If you reference a snapper in another way (for example using a field on your class), that reference will become invalid if the snapper you were referencing is replaced - for example after an undo operation. Your snapper will then end up referencing the replaced (*dead*) version of the snapper instead of the active version of it.
For more info on this, see Debugging_undo_crashes.
Comments
0 comments
Please sign in to leave a comment.