For.Bin or.Exe files, how does a linker generate line numbers in debug information?

Rainer Schuetze via Digitalmars-d-debugger digitalmars-d-debugger at puremagic.com
Sat Jun 17 05:05:31 PDT 2017



On 17.06.2017 04:17, moecmks wrote:
> I come from China, my English is not very high. Please forgive me.
> 
> First provide the context
> 
> @:debugger,IDA 6.8
> @:this is my source file <hello.d>, only this one.
> 
> import std.stdio;
> 
> void main () {
> 
>    writeln ("Hello World");
> }
> 
> I've found that for.Obj, using the -c -debug -gc -m32 command always 
> generates line number information that is seen by the debugger
> 
> However, as long as the connection is exe or bin, the debugger can only 
> see variable symbols, but no line numbers can be seen,I don't know if 
> I've done anything wrong 0_0
> 
> this is my linker's command:$(LINK) /CO:4/DEBUG /CODEVIEW /DEBUGLINES 
> /DEBUGMODULES:$(OBJPATH)\hello.obj $(OBJPATH)\hello.obj

The debug information emitted by compiling with -m32 follows a very old 
CodeView 4 specification that isn't well understood by current debuggers.

With cv2pdb (https://github.com/rainers/cv2pdb/releases) you can convert 
this debug information into a PDB file following newer standards but 
you'll need some components from the Microsoft tool chain to execute it.

Alternatively you can compile with -m32mscoff or -m64 that will use the 
Microsoft linker and the MS C runtime. This will generate a PDB file 
directly.


More information about the Digitalmars-d-debugger mailing list