Debug con GDB non può cercare i simboli del programma D
-
21-12-2019 - |
Domanda
Ho costruito con successo e installato il ramo GDB di Ian Buculaw (IBUCLAW) GitHub sul mio Ubuntu 13.10 x86_64 con il suo compilatore predefinito GCC 4.8.1.
Ho dovuto rimuovere il file ld
dalla sotto-directory bin
diversamente
DMD si lamenta di una cosa di sysroot in fase di collegamento.
Quando compilo il mio programma di test ed eseguilo attraverso GDB che ho Problemi.
Posso effettuare break main
, Esegui e GDB si arresta all'inizio di main
ma quando faccio next
ottengo la seguente output indesiderato
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
.
non è il GDB di Ibuculaw dovrebbe funzionare qui?
Il mio programma di test è stato compilato come
dmd -debug -g -gs -wi t_array.d -oft_array
.
senza avvisi né errori. Ho anche provato a fingere di essere c
dmd -debug -g -gc -gs -wi t_array.d -oft_array
.
con lo stesso risultato.
ulteriormente quando faccio b
seguito da Tab, la maggior parte dei simboli in
L'elenco di completamento non è demangled.
Il mio programma di test è simile a
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);
}
. Soluzione
funziona bene per me con il debugger MonoDevevilul e GDB (non con Debuger GDB per D), è necessario utilizzare il comando Start anziché Break Main.Maggiori dettagli nel tuo Dlangs Forum Thread: http://forum.dlang.org/thread/avbpulzptddlekkczwse@forum.dlang.org