Beim Debuggen von Kerndateien, die auf einer anderen Linux-Distribution als der Entwicklungsumgebung generiert wurden , ist der Stack-Trace möglicherweise nicht zuverlässig. Dynamisch verknüpfte ausführbare Dateien verwenden gemeinsam genutzte Bibliotheken, die je nach Distribution unterschiedliche Implementierungen haben können. GDB wird versuchen, die in der Entwicklungsumgebung verfügbaren Bibliotheksversionen zu verwenden, die von denen auf dem System des Kunden abweichen können. Infolgedessen können Stapeladressen unterschiedlichen Routinen zugeordnet werden oder sich innerhalb von Anweisungen befinden, was auf eine ungenaue Stapelverfolgung hinweist.
Um eine aussagekräftige Stapelverfolgung zu erhalten, erwerben Sie alle gemeinsam genutzten Bibliotheken von das System des Kunden und legen Sie den Solib-Absolute-Prefix-Pfad in GDB fest. Dadurch wird GDB umgeleitet, die Bibliotheken des Kunden für die Symbolauflösung zu verwenden.
Anstatt Kunden zu raten, eine -g-Binärdatei auszuführen, wird Folgendes empfohlen:
Dieser Ansatz stellt vollständige symbolische Informationen bereit, ohne eine Debug-Binärdatei an Kunden zu versenden oder sensible Quellen offenzulegen Code.
Weitere Einblicke in das Debugging finden Sie in den folgenden Ressourcen:
Linux:
Solaris:
Diese Bücher bieten Beispiele aus der Praxis und fortgeschrittene Techniken zum Debuggen unter Linux und Solaris, einschließlich Assembly-Analyse.
Das obige ist der detaillierte Inhalt vonWie kann ich auf verschiedenen Linux-Distributionen generierte Kerndateien zuverlässig debuggen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!