Hi everyone,
I am very happy to report that the debugging problems that almost everyone had at the JazzScheme MSLUG presentation where the Jedi IDE could not find source location of debugged code is now solved.
The problem was due to Gambit storing the absolute path of the source file in the compiled .o1 debugging info so that when a binary release was made and was later installed somewhere else, then the paths where wrong.
To help solve the problem, Marc Feeley added a new very flexible mecanism to Gambit in the form of 2 hooks :
- (##path->container-hook path) that should transform path into a container (is any Scheme object) and by default is the expanded path
- (##container->path-hook container) that should retransform the container into the source path
JazzScheme now uses those 2 hooks to store the module name instead of the absolute path in .o1 debugging info. As modules are located dynamically at runtime by searching installed packages, it means that source code can now be moved freely around without breaking debugging info and having to recompile.
A nice application of this is that it is now possible to develop a project for a client. Install the fully built project at the client site. And later should a critical problem occur at the client site, come with the sources on some medium 'et voila' the client installation now automatically has access to the full source code and can be debugged in the Jedi IDE.
Cheers,
Guillaume Cartier