Wie man Debug-Info für ladbare Linux-Kernel-Module (wie der Kernel in vmlinux- uname -r
.debug?) Erstellt wird, während wir ein Modul erstellen, wenn ja, wo es sein wird gelegen?Debug-Info für ladbare Kernelmodule
Antwort
Angenommen, Sie haben den Kernel mit CONFIG_DEBUG_INFO erstellt, die Debugsymbole sollten sich bereits in der .ko-Datei für das betreffende Modul befinden. Da das Modul jedoch dynamisch an jeder Adresse geladen werden kann, müssen Sie gdb ein bisschen mehr Informationen geben.
cd /sys/module/${MODNAME}/sections
cat .text .data .bss
Sie können dann diese Informationen benutzen, wenn GDB über die Module zu sagen:
(gdb) add-symbol-file ${MODPATH} ${TEXT} -s .data ${DATA} -s .bss ${BSS}
Es gibt ein Tutorial, das Sie durch diese auf der Linux Foundation Website geht. Kernel and Module Debugging with GDB
#Modify your Makefile like this then build it
#cat /sys/module/mydriver/sections/.text -> find the address
#Then run like add-symbol-file drivers/mydrivers/mydriver.o address from above #line
obj-m += module_name.o
MY_CFLAGS += -g -DDEBUG
ccflags-y += ${MY_CFLAGS}
CC += ${MY_CFLAGS}
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
debug:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
EXTRA_CFLAGS="$(MY_CFLAGS)"
clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Laut diesem Link müssen wir nicht die Flags -g in der Make-Datei meines Moduls hinzufügen ... ?? https://www.linux.com/learn/kernel-newbie-corner-kernel-and-module-debugging-gdb –
- 1. Docker lädt Kernelmodule
- 2. Nicht-GPL-Kernelmodule mit GPL-Einsen
- 3. Verteilen ladbare Built-in Bash-Module
- 4. debuginfo-installieren Sie eine lokale Datei
- 5. "DebugInfo für CritSec verweist nicht auf den kritischen Abschnitt" beim Analysieren von Deadlock
- 6. Systemtap PPC32 Unterstützung
- 7. rpmbuild: Wie Generation von „debuginfo“ Pakete überspringen (ohne SPEC-Datei ändern, weder .rpmmacros)
- 8. Was ist der einfachste Weg, um portable, dynamisch ladbare Bibliotheken in C++ zu schreiben?
- 9. "rpmbuild -bb package.spec" produziert Fehler: Paket bereits vorhanden ist:% Paket debuginfo
- 10. LLVM out of source pass build: Ladbare Module nicht unterstützt (unter Linux)
- 11. Loadable Bundle auf iOS, gibt es eine Möglichkeit, dies zu erreichen?
- 12. Python-Debugging: Dateiname und Zeilennummer, von der eine Funktion aufgerufen wird?
- 13. Datentyp für Bool in LLVM IR
- 14. Benutzerdefinierte "Ausführen/Debug in X" -Befehl/Plugin für Visual Studio
- 15. Eine Bibliothek, die geladen/benötigt sowie als Programm verwendet werden kann
- 16. Valgrind für ARM mit Linaro Toolchain benötigt libc6-dbg mit Buildroot
- 17. Erstellen neuer Systemaufrufe über KLD in FreeBSD
- 18. Aufrufen einer privaten Eigenschaft einer Python-Instanz mit einer Zeichenfolge
- 19. Debug-Informationen zu Ausnahmen für Benutzer anzeigen
- 20. Gibt es ein libnfc android ladbares Kernelmodul?
- 21. Office 2016 JavaScript API für Word, body.getHtml() und body.getOoxml() -Methoden funktionieren nicht
- 22. Scala für() vs für {}
- 23. „__floatsidf“ undefiniert Warnung, wenn Kernel-Modul
- 24. Haben NHibernate nicht die Eigenschaften ignoriert?
- 25. Verbindungszeichenfolge für Informix für .NET
- 26. Mindestanforderungen für Unity für Android?
- 27. Gruppe für Monat für Anwesenheitsliste
- 28. Modul für OneSignal für Appcelerator
- 29. Vorschlag für Vorlagenbuch für C++?
- 30. Alternative für BtsMSITask für BizTalk
Kann ich Haltepunkte und Watchpoints setzen? In diesem Tutorial haben sie erwähnt, dass wir nicht weiter fortgeschritten sind, wie das Setzen von Breakpoints etc .. ?? und all das kann in einem einzigen System gemacht werden, oder? oder brauche ich noch PCs? –
Sie können keine Haltepunkte auf Ihrem Host-Kernel auf dem Host festlegen. Debuggen Sie entweder einen Kernel in einer VM oder richten Sie das serielle Debug auf eine andere Maschine ein, damit Sie den Kernel beim Debuggen stoppen/starten können. – stsquad