Ich habe eine statische Bibliothek, die ich im Debug-Modus erstelle, aber wenn ich hineintrete, bekomme ich immer noch eine Disassemblierung. Ich möchte wissen, wie man nm oder ein anderes Werkzeug benutzt, um sicherzustellen, dass die Debug-Symbole nicht entfernt werden.Wie kann ich eine statische Bibliothek überprüfen, um zu sehen, ob die Debugsymbole exportiert werden?
Antwort
Herunterladen Dependencywalker für Ihr Betriebssystem
Es erkennt, wenn Ihre DLL Debug-Symbole hat. Wenn unter "Symbole" "Ungültig" angezeigt wird, bedeutet dies, dass Debug-Symbole entfernt wurden. Gültige Werte sind: PDB, CV, DBG usw.
Dependencywalker unterstützt nur dynamische Bibliotheken, nicht statische Bibliotheken. –
Sie können den Befehl file verwenden, der für viele Betriebssysteme verfügbar ist, einschließlich Windows über Cygwin.
Wenn es "nicht stripped" heißt, bedeutet das, dass es die Debug-Informationen vorhanden hat.
Als eine Randnotiz, für statische libs ar verwenden, um die .o
Dateien & zu extrahieren verwenden Sie file
auf ihnen direkt.
'Datei' ist für diesen Fall in Ordnung, obwohl es im allgemeinen Fall ist es möglich, eine nicht entfernte binäre ohne Debug-Informationen zu haben. – Nick
Sie können nm
's Option --debug-syms
verwenden, um auch Debuggersymbole (falls vorhanden) für das in eine Bibliothek gepackte Objekt aufzulisten (nm
).
Für Debugger-Symbole gibt die zweite Spalte N
an.
Beispiel (übernimmt das Objekt example.o in der Bibliothek zu sein)
nm --debug-syms libexample.a
Ausgabe (Auszug):
example.o:
0000000000000000 b .bss
0000000000000000 n .comment
0000000000000000 d .data
0000000000000000 N .debug_abbrev
0000000000000000 N .debug_aranges
0000000000000000 N .debug_info
0000000000000000 N .debug_line
0000000000000000 N .debug_loc
0000000000000000 N .debug_pubnames
0000000000000000 N .debug_str
0000000000000000 r .eh_frame
0000000000000000 n .note.GNU-stack
0000000000000000 r .rodata
0000000000000000 t .text
...
Mehr dazu bitte man nm
sehen.
Ab heute, 2015-09-24, und auf Mac, hat der 'Datei' Befehl nicht --debug-syms. Ich weiß, dass es einmal eine Weile her war. Also muss es geändert worden sein. (Die Trios, d. H. Nm, Otool und Dateien werden von Zeit zu Zeit ständig geändert.) Die Funktionalität ist jedoch immer noch vorhanden. ('Datei' Version: 5.04) -D Option: z.B. file -D myGreadLibrary.a D Debugging-Meldungen drucken. –
Sie können verwenden, um zu überprüfen, ob Ihre statische Bibliotheksgröße reduziert wurde. Die Größe der statischen Bibliothek ändert sich nicht, wenn sie keine Debugging-Symbole enthält.
Es ist unter Mac OS möglich, statische Bibliotheken zu überprüfen, die von Xcode generiert wurden.
- 1. Wie kann ich einen laufenden Prozess überprüfen, um zu sehen, welche Shared Libraries verwendet werden?
- 2. überprüfen, um zu sehen, ob Programmatically Kalender gemacht wurden
- 3. Wie kann ich eine Abfrage Ausnahme in Laravel abfangen, um zu sehen, ob es fehlschlägt?
- 4. Überprüfen Sie die Zeichenkette, um zu sehen, ob eine Zeichenkette in einem Zeichenkettenfeld darin vorkommt
- 5. Wie kann ich meine an die ausführbare Datei angehängte statische Bibliothek überprüfen?
- 6. Erstellen podspec, um statische Bibliothek zu versenden
- 7. -Test, um zu sehen, ob ein XElement
- 8. Überprüfen, ob ich die Datei entfernen kann
- 9. Wie um zu überprüfen, ob ein Objekt eine Sammlung ist
- 10. Wie überprüft man, ob eine statische Bibliothek Bitcode enthält?
- 11. überprüfen, um zu sehen, ob die Datei in mehreren Orten existiert
- 12. Wie kann ich überprüfen, ob eine Datenbankabfrage Ergebnisse liefert?
- 13. Kann Android-Anwendung die Datenbank exportiert werden?
- 14. Wie kann ich Gebäudebibliotheksprojekte verwalten, die sowohl eine statische Bibliothek als auch eine DLL erzeugen?
- 15. Statische Assert, um statische Const-Klasse Datenelemente zu überprüfen?
- 16. Codeigniter: Wie kann ich prüfen, ob eine Bibliotheksmethode existiert, ohne die Bibliothek zu laden?
- 17. Kann die Vergleichsausgabe in eine Datei exportiert werden?
- 18. Wie können Objektdateien (.o) kombiniert werden, um eine statische Bibliothek (.a) für iOS zu erstellen?
- 19. Wie kann ich linq verwenden, um zu überprüfen, ob eine flags/bitwise Enumeration einen Typ enthält?
- 20. Wie kann ich eine Methode schreiben, um Zeichen zu überprüfen, ob sie mit dem Argument übereinstimmt?
- 21. Wie zu überprüfen, ob eine Webseite
- 22. Gibt es eine statische Bibliothek, um ein Framework zu erstellen?
- 23. Die Tabelle kann nicht exportiert werden
- 24. MonoTouch-Laufzeittest, um zu sehen, ob es im Simulator läuft
- 25. Wie kann ich feststellen, ob eine Rust-Bibliothek veraltet ist?
- 26. Node.js - Modul exportiert statische Variable
- 27. Welchen Algorithmus kann ich verwenden, um zu überprüfen, ob eine Liste von Knoten mit einigen Einschränkungen verbunden werden kann?
- 28. Wie kann ich eine JavaScript AES-Bibliothek nach .NET portieren, um die Interoperabilität zu gewährleisten?
- 29. Gibt es eine Möglichkeit, eine mögliche Zombie-Transaktion zu testen, um zu sehen, ob sie zurückgesetzt werden kann?
- 30. Wie kann ich überprüfen, ob bereits eine Ausnahme ausgelöst wurde?
Jede bestimmte OS? –
'Mann nm' könnte ein Anfang sein. –
Da Sie sicher sind, dass Sie Ihre statische Bibliothek mit Debug-Symbolen erstellen, glaube ich, dass Ihr Programm nicht mit der neuesten statischen Bibliothek verknüpft ist. Es wurde auf einem anderen Computer kompiliert/verlinkt oder Sie haben es nicht auf diesem Computer neu kompiliert/verlinkt. – ernesto