Debugging D code with GDB
Iain Buclaw
ibuclaw at gdcproject.org
Sun Nov 28 21:59:51 UTC 2021
On Saturday, 27 November 2021 at 14:17:11 UTC, Eduard Staniloiu
wrote:
> Hello,
>
> I'm trying to use `gdb` to debug D binaries, but I'm having
> trouble accessing the methods of a struct or class. It seems
> that `gdb` doesn't see them.
>
> Given the following simple example
> ```
> // test.d
> struct S
> {
> int x;
>
> void myPrint() { writefln("x is %s\n", x); }
> }
>
> void main(string[] args)
> {
> S s;
> }
> ```
> Compile the source file with debug simbols (`dmd -g test.d
> -of=test`) and open the binary with gdb (`gdb test`) and run
> the following
>
> ```
>> break _Dmain # break at D entry point
>> run
>> ptype s
> type = struct test.S {
> int x;
> }
>> print s.myPrint()
> Structure has no component named myPrint.
> ```
>
> As you can see, when I try to access the `myPrint()` method I
> get the error
> "Structure has no component named myPrint."
>
DMD doesn't emit this information. GDB can't work miracles when
the compiler isn't pulling its own weight.
More information about the Digitalmars-d-learn
mailing list