Lösungen, Die Prüfen, Ob Die Binärdatei Debug-Symbole Enthält

In diesem Handbuch beschreiben wir viele der möglichen Ursachen, die manchmal dazu führen können, dass jede einzelne Binärdatei mit Debug-Symbolen überprüft wird, und dann schlagen meine Familie und ich verschiedene Möglichkeiten vor, um Sie bei der Lösung dieses Problems zu unterstützen .

Läuft Ihr Computer langsam und unzuverlässig? Sind Sie es leid, sich mit lästigen Windows-Fehlern herumzuärgern? Nun, suchen Sie nicht weiter, denn Reimage ist hier, um zu helfen.

Integrierte Symbole Debug-Symbole bestehen normalerweise nicht nur aus dem Namen jeder Feier oder globalen Variablen, sondern auch aus dem gesamten Namen der Computerquelldatei, in der das Symbol beobachtet wird, und dem Zeilensatz, in dem es definiert ist.

Wenn ich objdump --syms ausführe, sehe ich viel mehr als “” unvollständige Zeichen in der Ausgabe (zumindest für Kernel-Objekte).

Wie überprüfe ich wenn Binär Debugging hat?

Um sicher zu sein, dass das Kernel-Objekt Debug-Informationen enthält, können Sie das Vorangehende am Ende des gesamten objdump-Befehls hinzufügen: | Debug grep. Wenn diese Tatsachenfirma gefunden wird, werden Sie bedenken, dass Ihr aktuelles Kernel-Problem Debug-Informationen enthält. Wenn dies definitiv nicht der Fall ist, dann ist das ein „reines“ Kernelement.

Um zu sehen, ob ein Kernel-Objekt aus Debug-Informationen erstellt wird, können Sie am Ende des jeweiligen objdump -Befehls einen bestimmten folgenden Eintrag hinzufügen : Grep | Fehlersuche .

Wenn unsere spezielle Zeile gefunden wird, erkennen Sie, dass einige Kernel-Objekte Debug-Informationen enthalten. Andernfalls muss es dieses “saubere” Kernel-Objekt sein.

  geertvc - jimi: ~ / mystuff - kernels / linux-3.12.6 $ objdump --syms ./modules/lib/modules/3.12.6/kernel/drivers/i2c/busses/i2c-at91. nach | Debug-Grep 

check, ob Binärdatei Debug-Symbole hat

Ein Beispiel für genau dieses Kernel-Modul, das ich mit Hilfe von Debug-Informationen kompiliert habe:

Vergeuden Sie keine Zeit mehr mit Computerfehlern.

Wir stellen vor: Restoro – die unverzichtbare Software für jeden, der sich auf seinen Computer verlässt. Diese leistungsstarke Anwendung repariert schnell und einfach alle gängigen Fehler, schützt Ihre Dateien vor Verlust oder Beschädigung, schützt Sie vor Malware und Hardwareausfällen und optimiert Ihren PC für maximale Leistung. Egal, ob Sie Studentin, vielbeschäftigte Mutter, Kleinunternehmerin oder Spielerin sind – Restoro ist für Sie!

  • 1. Laden Sie die Reimage-Software herunter und installieren Sie sie
  • 2. Öffnen Sie die Software und klicken Sie auf "Scannen"
  • 3. Klicken Sie auf "Wiederherstellen", um den Wiederherstellungsvorgang zu starten

  •   geertvc - jimi: ~ / mystuff / popcorn kernels / linux-3.12.6 $ objdump --syms ./modules/lib/modules/3.12.6/kernel/drivers/ i2c/busse/i2c-at91. wenn du willst | Debug-Grep00000000 l mittels .debug_frame 00000000 .debug_frame000 000 kd. debug_info 00000000 .debug_info00000000 b D .debug_abbrev 00000000 .debug_abbrev00000000 l d .debug_loc. ... ... ... ... ... ... .00000000 ..L debug_loc00000000 d .debug_aranges 00000000 .debug_aranges00000000 s D .debug_ranges 00000000 .debug_ranges00000000 h D .debug_line 00000000 .L debug_line00000000 debug_str. ... ... ... ... .00000000 ..debug_str00000000 debbie .debug_frame 00000000 $ d 

    Wie Sie sehen, gibt das erste Naturtalent nichts zurück, der zweite Prozess kommt mit debug .

    Hinweis. In meinem Fall hat der Kauf der bestimmten -Datei “Stripped” zurückgegeben, weit entfernt von Debug und kein Debug steht. Der Unterschied im Grad Ihres aktuellen Objektkernels wurde jedoch erheblich:

    • ca. Benutzerdefiniertes Debug-Know-how 16k
    • Ungefähr 137 KB, wenn es um Debug-Informationen geht.

    Überprüfen Sie unabhängig davon, ob Binärdatei Debug-Symbole enthält

    Mein Problem ist, ist der Befehl deklarieren in solchen Fällen geeignet?Nach meinem Verständnis verlasse ich mich auf objdump --syms ... | grep Debug-Anfrage .

    Was normalerweise für Symbole in GDB?

    Die Debug-Zeichentabelle zeigt Anweisungen auf die gleiche Weise wie ein binäres Programm an, das mit derselben Variablen, Funktion und / oder vielleicht einer Zeile in einem Teil des Quellcodes zusammengestellt wurde. Diese Zuordnung wäre eher: Programmieranweisung ⇒ Name aus allen Dienstleistungen oder Produkten, Art des Materials, Quelldatei, spezifische Datensatznummer.

    Sie können file und folglich objdump unter Linux implementieren. Insbesondere können Sie überprüfen, ob die Registrierung “split” oder “not split” lautet (im großen Ubuntu 20.04.1 LTS , ob es sich um eine ausführbare Datei handeln muss, die mit < code> – h kompiliert stattdessen mit -g oder nicht entfernt für . show information Befehl. Aber das alles durch -g , zeigt bei der Arbeit mit debug_info, zusätzlich) und daher gibt objdump ob --syms alles Nützliche an (bei mir bedeutet es “no Symbole” für die aktuelle Version).

    Wenn ich ein Comandu objdump --syms starte, sehe ich viel mehr als nur “fehlende Symbole” im Ausgabekernel (weniger in Bezug auf Objekte).

    Wie füge ich hinzu? ein Symbol in GDB?

    Um zusätzliche Symbole hinzuzufügen, können Sie in der Add-Symbol-Datei haben. Der Befehl add-symbol-file folgt verschiedenen Symboltabelleninformationen, die normalerweise dem Dateinamen des Berichts entsprechen. Sie würden diesen Verkauf verwenden, wenn dieser bestimmte Dateiname dynamisch (andernfalls) in Ihr laufendes Programm eingefügt würde.

    Um zu prüfen, ob Debug-Informationen im Kernel-Loch vorhanden sind, können Sie am Ende des objdump -Einflusses Folgendes hinzufügen: | grep debug .

    Wenn diese Zeile leicht zu finden ist, wissen Sie, dass dieses Kernel-Theme Debug-Informationen enthält. Nicht, wenn es nur ein “sauberes” Kernel-Objekt ist.

       [sichere E-Mail] : ~ / mystuff / popcorn kernels / linux-3.12.6 $ objdump --syms ./modules/lib/modules/3.12 .6/Kernel/Treiber für jeden i2c/Bus im Vergleich zu i2c-at91.ko | Debug-Grep 

    Beispiel: Welches Kernel-Modul habe ich immer konfiguriert, das Debug-Informationen enthält:

       [sichere E-Mail] : ~ / mystuff / popcorn kernels / linux-3.12.6 $ objdump --syms ./modules/lib/modules/3.12 .6/kernel/drivers oder i2c/bus und i2c-at91.ko | Debug-Grep00000000 r t .debug_frame 00000000 .debug_frame000 000 l.d. debug_info 00000000 .debug_info00000000 l D .debug_abbrev 00000000 .debug_abbrev00000000 t siehe Debug_loc. ... ... ... ... ! .00000000 ..L debug_loc00000000 Formular .debug_aranges 00000000 .debug_aranges00000000 mit D .debug_ranges 00000000 .debug_ranges00000000 l D .debug_line 00000000 .L debug_line00000000 b .debug_str. ... ... ? ... ... .00000000 ..debug_str0000010 s .debug_frame 00000000 $ d 

    Wie Sie sehen, gibt die erste Ausgabe nichts zurück, die zweite Ausgabe gibt Zeilen zum Debuggen zurück.

    Hinweis. In meinem Beispiel hat der Befehl register während des Debuggens die Schlummerfunktion “nicht gelöscht” zurückgegeben, ebenso wie der Fall, dass kein Debuggen vorliegt. Es wurde jedoch ein Unterschied im Aussehen des Kernel-Objekts bemerkbar:

    • ca. 16k ohne Debug-Marketinginformationen
    • ca. 137k neben Debug-Details

    Meine Frage ist, ist der größte Teil des Befehls file in solchen Fällen zuverlässig?Ich verlasse mich auf –syms objdump ... | grep Debug-Anweisungen .

    Dieses Programm schützt Sie vor den vielen Fehlern, die auf einem Computer auftreten können, und hilft auch, Probleme schnell zu beheben.

    Check If Binary Has Debug Symbols
    Проверьте, есть ли в двоичном файле символы отладки
    Verifique Se O Binário Tem Símbolos De Depuração
    Vérifiez Si Le Binaire A Des Symboles De Débogage
    Kontrollera Om Binär Har Felsökningssymboler
    Compruebe Si El Binario Tiene Símbolos De Depuración
    Controleer Of Binair Foutopsporingssymbolen Heeft
    Controlla Se Il Binario Ha Simboli Di Debug
    바이너리에 디버그 기호가 있는지 확인
    Sprawdź, Czy Plik Binarny Ma Symbole Debugowania