La depuración con GDB no puede buscar símbolos del programa D
-
21-12-2019 - |
Pregunta
He construido e instalado con éxito la rama GDB de Ian Buclaw (Ibuclaw) en GitHub en mi Ubuntu 13.10 x86_64 con su compilador predeterminado GCC 4.8.1.
tuve que eliminar el archivo ld
desde el bin
Subdirectorio De lo contrario, DMD se queja de una cosa de Sysroot en la fase de enlace.
Cuando luego compilé mi programa de prueba y lo ejecuto a través de GDB, tengo problemas.
puedo hacer break main
, se ejecuta y GDB se detiene al comienzo de main
pero cuando lo hago next
Obtengo el siguiente resultado no deseado
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
¿No se supone que el BGF de ibuclaw funciona aquí?
Mi programa de prueba fue compilado como
dmd -debug -g -gs -wi t_array.d -oft_array
sin advertencias ni errores.También he intentado finge ser C
dmd -debug -g -gc -gs -wi t_array.d -oft_array
con el mismo resultado.
Más cuando lo hago b
Seguido de TAB, la mayoría de los símbolos en la lista de finalización no están desmanzados.
Mi programa de prueba se parece
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);
}
Solución
Funciona bien para mí con monodevelop y el depurador GDB (no con el depurador gdb para D), deberías usar el comando start en lugar de break main.Más detalles en el hilo del foro de dlangs tuyo:http://forum.dlang.org/thread/avbpulzptddlekkczwse@forum.dlang.org