in reply to A query on XS programing with multiple interpreter on Linux!!!

I am facing a typical problem in XS programming with multiple interpreter on Linux 2.1 advanced server.
It's a typical problem? What's the typical solution?
In xs(say test.xs) file I have written following code
.......
MODULE=TestModule::TestAPI       PACKAGE=TestModule:Test1

int TestMethod1(.......)
.......
That's not code. If you seriously want help, show some real code.
Can any one please give me any pointers how can I check why this strange thing is happening on Linux?
Without more information that is impossible.
  • Comment on Re: A query on XS programing with multiple interpreter on Linux!!!

Replies are listed 'Best First'.
Re: Re: A query on XS programing with multiple interpreter on Linux!!!
by pijush (Scribe) on Apr 19, 2004 at 12:44 UTC
    I got the problem. Actually I was little confused after seeing the code in gdb. gdb shows the code which is present in my .c file but actually it is executing the real code corresponding to the appropriate method. I just look the corresponding line no shown by gdb in .xs file and find that it is executing the right code. I really don't know why gdb is not showing appropriate code from .c file!!!!
    Thanks
    Regards
    -Pijush

      In the process of converting the .xs file to .c, lots of #line directives are introduced to allow the debugger to know the original source of the lines of code directly copied from the XS. It is possible that gdb is getting confused by these, or xsubpp may have got confused and emitted the wrong lines - you could try stripping out all the lines in the .c file starting #line and recompiling, which might allow gdb to do a better job.

      First though it is worth confirming that your program is actually sitting in the infinite loop; you might consider printing a dot and then sleeping a second within the loop, or alternatively you could try to force an error for gdb to catch, for example by dereferencing a null pointer:

      char c = *(char*)0;

      Hugo