2014-01-09 10 views
6

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); 
} 

Antwort

3

funktioniert gut für mich mit monodevelop und GDB-Debugger (nicht mit gdb debuger für D), sollten Sie anstelle des Befehls break main starten verwenden. Weitere Details in Ihrem dlangs Forum-Thread: http://forum.dlang.org/thread/[email protected]

+0

Alles funktioniert jetzt! Einfach wunderbar! –

+0

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? –

+0

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