Ich arbeite mit gdb und habe Referenzen in der Dokumentation zu "Symbolen" gefunden. Ist das ein anderes Wort für extern (exportierte) sichtbare Variablen?Worauf bezieht sich das Wort "Symbol" beim Debuggen oder Verknüpfen?
Danke,
Scott
Ich arbeite mit gdb und habe Referenzen in der Dokumentation zu "Symbolen" gefunden. Ist das ein anderes Wort für extern (exportierte) sichtbare Variablen?Worauf bezieht sich das Wort "Symbol" beim Debuggen oder Verknüpfen?
Danke,
Scott
A 'Symbol' ist eine symbolische Kennung einschließlich Funktion und Variablennamen. Der Compiler/Linker erstellt während des Builds eine Symboltabelle, die vom Debugger verwendet wird, um diesen Entitäten symbolische Namen auf Source-Ebene zu geben, im Gegensatz zu einfachen Adressen (daher der Name "symbolic debugger", den Sie möglicherweise erhalten) über).
Sie sind Einträge in den Code des symbol table, erzeugt wird, wenn es zu kompilieren. Variablen, Funktionen, etc.
Ah, ich habe es auf Wikipedia vergessen - danke für deine Antwort! –
Symbole sind menschliche Namen von Variable, Funktion, Klasse ... ohne Symbole, Sie sehen alles nur Daten an Adresse.
Beispiel:
mit Symbolen:
call printf
ohne Symbol
call dword ptr 0x804480
Danke für die Assembler-Beispielausgabe. –
Und Debugging-Symbole (wahrscheinlich so genannt wegen der Art und Weise "STABS" zum Beispiel in der Symboltabelle gespeichert) bezieht sich auch auf Daten über & hinaus, was der Linker benötigt, wie Zeilennummer/Adresszuordnungen, Typ Informationen, lokale Variablen und nicht zu vergessen "statische" Symbole (die der Linker offensichtlich nicht benötigt, die aber offensichtlich für das Debugging von großer Bedeutung sind).
Natürlich brauchen PE-Bilder keine "Symboltabellen" als solche (oder besitzen sie in der Regel) - einfach Tabellen importieren/exportieren. Im Zusammenhang mit Windows werden daher "Symbole" und "Debugging-Symbole" austauschbar verwendet, um sich auf beliebige Symbole zu beziehen, die nach der Verknüpfung übrig bleiben; Mit MSs Toolchain gehen diese (fast?) immer in "pdb" -Dateien. (Siehe pdb-ms.)
Danke Clifford - das macht alles klar! –