Hi - Just responding to one thing:
On 5/27/15, 3:50 PM, "Greg Kreider" <[email protected]> wrote: > >Might it possible to generate a map of the C lines that correspond >to each Chapel source line, so that you could use the normal C >debugging tools to find out where the error occurred, and then trace >it back to Chapel? Bonus points if there was a way to do that >automatically ... This should work now... this works for me: foo.chpl: proc doit() { writeln("hello"); } doit(); $ chpl -g --savec=tmp foo.chpl --cpp-lines $ gdb ./a.out (gdb) break doit_chpl (gdb) run Breakpoint 1, doit_chpl () at foo.chpl:3 3 writeln("hello"); There are really three issues with this: 1) I get confused about which flags to the compiler cause it to use C line numbers and which Chapel line numbers. You sometimes have to specify --cpp-lines, which might be confusingly named... (it means to add #line directives to the generated C, not to use C line numbers when debugging). 2) Even though you can step through Chapel code, inspecting variables often doesn't work as you would expect (since the C code generated the debug info, not the Chapel code). 3) Chapel symbols generally have _chpl appended to them and will be unique'd within your program. So if you had multiple functions called doit, you might have doit3_chpl e.g.. There is some ongoing work to improve debug-ability with the LLVM backend, so at least there's some ongoing work in the area... but I don't yet know what new abilities that will provide... I've also (a long time ago) done some work in getting stack traces for Chapel programs that abnormally exit. In practice, I usually just run the program in gdb and break on gdbShouldBreakHere() and then ask gdb for a stack trace.. Cheers, -michael ------------------------------------------------------------------------------ _______________________________________________ Chapel-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/chapel-users
