Smallworld 5 Debugging Tips

Traceback Information

The Smallworld 5 tracebacks do not provide arguments as in the older versions. They do provide line numbers to the magik or java file that they are called from. This is very helpful only if you have the code, which is less and less under the new product delivery.

Also in Smallworld 5, the actual exemplar/mixin name that the method is written on is reported in the traceback. Prior releases had the subclassed exemplar name if it was inherited. So now it is more difficult to determine from the traceback if you are dealing with a Magik object or a realized database object. It does provide the benefit of knowing exactly where the method is from, where prior releases you had to figure out if the method was written on the exemplar or not.

Reporting Arguments for Methods

I have added code here that easily copies the original method to a new method name. It provides an option to report a replacement method that calls and returns results of the new method name. It will also show the argument list. The basic usage would be as follows:

fcsi_method_manip.fcsi_copy_method(sector_rope,:close|()|,:sw!,_true)

Replacing method: sw:sector_rope:[1-1].close() with sw!close()
Original source:  I:/databases/sw430/product/sw_core/modules/sw_core/geometry_vector/source/sector_rope.magik
_method sector_rope.close(_gather args)
    show(:sector_rope,:|close()|,_scatter args)
    _return _self.sw!close(_scatter args)
_endmethod

You will be able to compile the reported new method and when called, see what the arguments are.

<NEED MORE HERE, ANYONE?>

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License