Ich habe erfolgreich Ian Buclaw (ibuclaw) GDB-Zweig unter github auf meinem Ubuntu 13.10 x86_64 mit seinem Standard-Compiler GCC 4.8.1 gebaut und installiert.Debugging mit GDB Kann nicht nachschlagen D Programmsymbole
Ich musste die Datei ld
aus dem bin
Unterverzeichnis entfernen, sonst DMD beschwert sich über eine Sysroot-Sache in Verbindungsphase.
Wenn ich dann mein Testprogramm kompiliere und es über GDB laufen lasse, habe ich Probleme.
kann ich break main
, laufen und GDB hält am Anfang main
aber wenn ich next
bekomme ich die folgende unerwünschte Ausgabe
Single stepping until exit from function main,
which has no line number information.
0x00007ffff760ede5 in __libc_start_main() from
/lib/x86_64-linux-gnu/libc.so.6
Ist die angebliche nicht ibuclaw GDB hier zu arbeiten?
Mein Testprogramm wurde als
dmd -debug -g -gs -wi t_array.d -oft_array
ohne Warnungen noch Fehler zusammengestellt. Ich habe auch versucht, vortäuschen C
dmd -debug -g -gc -gs -wi t_array.d -oft_array
mit dem gleichen Ergebnis.
Weiter, wenn ich b
gefolgt von Tab, die meisten der Symbole in die Vollständigkeit Liste sind nicht gefragt.
Mein Testprogramm sieht aus wie
import std.stdio, std.algorithm;
void main(string args[]) {
int[] x;
writeln(x.sizeof);
if (x) {
writeln("Here!");
} else {
writeln("There!");
}
int xx[2];
auto xc = xx;
xc[0] = 1;
writeln(xx);
writeln(xc);
int[2] xx_;
auto hit = x.find(1);
if (hit) {
writeln("Hit: ", hit);
} else {
writeln("No hit");
}
int[2] z; // arrays are zero initialized
writeln(z);
assert([].ptr == null);
assert("ab"[$..$] == []);
auto p = "ab"[$..$].ptr;
writeln(p);
assert(p != null);
}
Alles funktioniert jetzt! Einfach wunderbar! –
Wenn ich es wie oben ausgeführt habe, wird kaum irgendein D-Symbol korrekt dargestellt, wenn man in GDB 'print SYMBOL' in Bezug auf die Namensherausforderung und deren Wert ausführt. Ist das der aktuelle Stand von Ibuclaws GDB oder habe ich etwas verpasst? –
GDB kann noch nicht alle D-Symbole abmildern. Iain Buclaw (Hauptentwickler des GDC-Projekts) hat kürzlich einige Verbesserungen vorgenommen, die hoffentlich bald in den Haupt-GDB-Code einfließen werden, was uns sehr helfen wird. Haben Sie versucht, Ihr D-Programm mit dem GDC zu kompilieren? – DejanLekic