Ich habe ein einfaches Programm geschrieben, das einen String druckt und zurückgibt. Ich konnte es direkt ausführen, indem ich " ./ a.out " eintippte. Aber wenn ich es in gdb starte, passiert der oben erwähnte Fehler. Ich habe versucht, den Code mit dem Flag " -g " zu kompilieren und ohne es zu verwenden. Beide Male gab es das gleiche Ergebnis. Kann mir jemand bei dieser Frage helfen?
Diese Nachricht,
%Vor%SO bei 0x7ffff7ffd000
ist eine Warnung, die nicht verhindert, dass GCC a.out
ausführt; zumindest sollte es nicht.
Es heißt, dass es ein dynamisch geladenes Objekt gibt, das von a.out
verwendet wird, denen Symbole fehlen. Nichts über a.out selbst.
Sie können versuchen, a.out als statische ausführbare Datei zu erstellen. so:
%Vor%Fügen Sie natürlich weitere benötigte Compiler-Argumente hinzu.
Als statische ausführbare Datei erhalten Sie diese Warnung nicht von GCC. Diese Symbole mögen immer noch fehlen, aber es sollte die Ausführung des Programms nicht beeinflussen.
Es scheint, dass dies ein Fehler in glibc oder gdb ist (je nachdem, wo Sie die Schuld haben wollen). Es ist scheinbar harmlos - gdb wird gut funktionieren.
Es wird durch einige Magie verursacht, die der Linux-Kernel bei den ausführbaren Binärdateien ausführt. Für Details siehe Debian-Fehlerbericht 738702 und das Original gdb Fehlerbericht 13097 .
Es gibt einen Patch, um diesen Fehler zu beheben, den Debian kürzlich angewendet hat, so dass das Problem mit GDB 7.7.1 auf Debian nicht mehr auftritt.