The intermediate C code generated by Critcl can be kept around by using the -keep flag. It is also possible to force a compile (i.e. disregarding the MD5 checksum) by using the -force flag:
$ critcl -force -keep -pkg blowfish
In case of compile errors the source always remains in the ~/.critcl/platform directory, but either way it won't be obvious because of the file names generated from the MD5 hash. To find out what the last compile was doing, look at the end of the log file, which will have a name like
v032.log
Critcl inserts a "#line" directive in the generated C source, so that an error on line three of cproc "foo" in script "bar.tcl" will be reported by gcc as occurring on "bar.tcl/foo", line 3. No name is added to ccode sections, so with multiple sections, identifying the line is harder.
Critcl::cheaders can be used to set compile or linker flags, for example:
$ critcl::cheaders -g
causes the output library to contain symbols and the -DNDEBUG flag is not added to the gcc command line.
One area that will need to be addressed is the debugging of Critcl procedures - even if it is just defining a few procedures to do "puts-style" debugging in C.