Beim Debuggen mit GDB können D-Programmsymbole nicht gesucht werden
-
21-12-2019 - |
Frage
Ich habe den GDB -Zweig von Ian Buclaw (Ibuclaw) auf GitHub auf meinem Ubuntu 13.10 x86_64 erfolgreich gebaut und installiert.
Ich musste die Datei entfernen ld
von dem bin
Ansonsten beschwert sich DMD in der Linkphase über eine SySroot-Sache.
Wenn ich dann mein Testprogramm zusammenstelle und es durch GDB ausführe, habe ich Probleme.
ich kann break main
, run und GDB stoppt am Anfang von main
Aber wenn ich das mache next
Ich erhalte 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
Sollte die GDB von Ibuclaw hier nicht funktionieren?
Mein Testprogramm wurde als kompiliert
dmd -debug -g -gs -wi t_array.d -oft_array
ohne Warnungen oder Fehler.Ich habe es auch versucht vorgeben, C zu sein
dmd -debug -g -gc -gs -wi t_array.d -oft_array
mit gleichem Ergebnis.
Weiter, wenn ich es tue b
Gefolgt von Registerkarte, die meisten Symbole in der Fertigstellungsliste sind nicht demang gestellt.
Mein Testprogramm sieht so aus
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);
}
Lösung
Funktioniert bei mir gut mit Monodevelop und GDB-Debugger (nicht mit GDB-Debugger für D). Sie sollten den Startbefehl anstelle von Break Main verwenden.Weitere Details in Deinem Dlangs-Forenthread:http://forum.dlang.org/thread/avbpulzptddlekkczwse@forum.dlang.org