www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Known problem? DMD commandline module order matters for debugging on

I'm not sure if this is a known problem, or if it's something 
that I'd need to file a new bug for, but if a program is compiled 
with a module besides the one containing main() first on the 
commandline, certain debug info is clobbered on 64-bit linux.

An easy testcase, with module afunc.d:

module afunc;

auto inc (size_t var) {
	return ++var;
}

and module main.d:

import afunc;

void main() {
	size_t counter;
	
	while (counter < size_t.max) {
		counter++;
	}
}

Compile with the following command:
$  dmd -m64 -g -ofbadsymbols afunc.d main.d
$ gdb ./badsymbols

if you run the program for a moment, then ^C and type 'print 
counter', gdb gives the error 'Could not find the frame base for 
"D main".'

However, compiling with this command:
$ dmd -m64 -g -ofgoodsymbols main.d afunc.d

using print counter in gdb will actually work.
Jun 12 2014