Debugging modules
Since modules are loaded dynamically by Mosel, it may be difficult to use a debugger for analysing the behaviour of the program. A work around consists in compiling the module as part of a simple program (static module) that initialises Mosel then executes a model (using the embeded module to debug). A debugger can be used on this program to trace the operation of the module which is not loaded dynamically any more.
Example: the following program can be used to debug the module `mymodule'.
#include <stdlib.h> #include "xprm_mc.h" #include "mymodule.c" /* Include the source of the module */ int main() { int rts; XPRMinit(); /* Declare the module as static */ XPRMregstatdso("mymodule",mymodule_init); /* Execute a test model */ XPRMexecmod("g","mymodule_test",NULL,&rts,NULL); return rts; }
The program source dsodbg.c provided with the NI examples can be used as a shell for debugging modules.