Linux wird geladen, vmlinux wird debuggt

Linux wird geladen, vmlinux wird debuggt

Laden von Kernelsymbolen mit gdb

arm-eabi-gdb out/Ziel/Produkt/msm8625/obj/KERNEL_OBJ/vmlinux

Aktivieren Sie in der .config des Kernels DEBUG_INFO und DEBUG_VM

Fehlercode lokalisieren

(gdb) l * qrd7627a_add_io_devices+0x100
0xc07cd05c ist in qrd7627a_add_io_devices (/home/yejialong/GH700C/kernel/arch/arm/mach-msm/msm8x25/goso-msm7627a-io.c:1851).
1846 } sonst wenn (machine_is_msm8625q_skud() || machine_is_msm8625q_evbd()) {
1847 #ifndef CONFIG_CALA02
1848 Plattformgeräteregister(&pmic_mpp_leds_pdev_skud);
1849 #endif
1850 /* aktiviere den Skud-Blitz und die Taschenlampe durch den GPIO-LED-Treiber */
1851 Plattformgeräteregister(&gpio_flash_skud);
1852 } sonst wenn (Maschine_ist_msm8625q_skue()) {
1853 /* aktiviere die Skue-Taschenlampe durch den GPIO-LED-Treiber */
1854 Plattformgeräteregister(&gpio_flash_skue);
1855 }

Nachfolgend wird die Methode zum Laden der MTK-Plattform beschrieben. Unabhängig von der Plattform ist sie jedoch ähnlich und das Prinzip ist dasselbe.

weiqifa@weiqifa-Inspiron-3847:~/weiqifa/tm100$ ./prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin/arm-eabi-gdb ./out/target/product/tm100/obj/KERNEL_OBJ/vmlinux
GNU gdb (GDB) 7.3.1-gg2
Copyright (C) 2011 Free Software Foundation, Inc.
Lizenz GPLv3+: GNU GPL Version 3 oder höher <http://gnu.org/licenses/gpl.html>
Dies ist freie Software: Sie können sie beliebig ändern und weitergeben.
Es besteht KEINE GARANTIE, soweit gesetzlich zulässig. Geben Sie „Kopieren anzeigen“ ein.
und „Garantie anzeigen“ für Einzelheiten.
Dieses GDB wurde als „--host=x86_64-linux-gnu –target=arm-linux-android“ konfiguriert.
Anweisungen zum Melden von Fehlern finden Sie unter:
<http://source.android.com/source/report-bugs.html>...
Symbole werden aus /home/weiqifa/weiqifa/tm100/out/target/product/tm100/obj/KERNEL_OBJ/vmlinux gelesen … fertig.
(gdb)

Rockchip rk3399 - Debuggen von vmlinux

./prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-addr2line -f -e kernel/vmlinux
weiqifa@dev:~/rk3399_7in1$ ./prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-addr2line -f -e kernel/vmlinux ffffff8008459f3c
rk_iommu_domain_free
/data/weiqifa/rk3399_7in1/kernel/drivers/iommu/rockchip-iommu.c:1005 (Diskriminator 2)
weiqifa@dev:~/rk3399_7in1$

Tombstone-Debugging der RK-Plattform

./prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-addr2line -e ./out/target/product/rk3399_mid/symbols/system/lib/libspeexresampler.so 0x00002d54
/proc/self/cwd/external/speex/libspeex/resample.c:376

Verwenden Sie zuerst den Befehl arm-eabi-gdb, um dieses Ding zu finden, und suchen Sie dann nach vmlinux. Und meine Version arm-eabi-4.7/ kann verwendet werden. Das habe ich versucht.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Mehrere Möglichkeiten, Python-Programme im Linux-Hintergrund auszuführen
  • Erstellen und Ausführen von Linux-Shell-Skripten
  • Python verwendet Paramiko zum Betrieb von Linux
  • Implementierungsmethode von Android zum Ausführen von Shell-Skripten im Linux-Terminal, um das Protokoll der aktuell ausgeführten App direkt auszudrucken
  • So führen Sie Linux-Befehlsprogramme remote und stapelweise mit pyqt aus
  • Verwendung der Zabbix-API in einer Linux-Shell-Umgebung
  • So stellen Sie versehentlich gelöschte Nachrichtendateien unter Linux wieder her
  • Zusammenfassung der Lösungen für allgemeine Linux-Probleme
  • Detaillierte Analyse des Linux-Kernel-Makros container_of
  • Tipps zum Anzeigen von Verlaufsdatensätzen und Hinzufügen von Zeitstempeln in Linux

<<:  So implementieren Sie ein Glücksradspiel im WeChat-Applet

>>:  Detaillierte Erläuterung der MySQL-Existes- und Not-Existes-Beispiele

Artikel empfehlen

JQuery implementiert das Ausblenden und Anzeigen von Animationseffekten

In diesem Artikel wird der spezifische Code von J...

Beispiele für die Verwendung von „Provide“ und „Inject“ in Vue2.0/3.0

Inhaltsverzeichnis 1. Was ist der Nutzen von Prov...

MySql5.7.21 Installationspunkte Datensatznotizen

Die heruntergeladene Version ist die Zip-Dekompri...

JavaScript zum Erzielen eines einfachen Karusselleffekts

Was ist ein Karussell? Karussell: In einem Modul ...

Redo-Dateiwartungsmethode der InnoDB-Engine

Wenn Sie die Größe und Anzahl der InnoDB-Redo-Log...

Detaillierte Erklärung des CSS3-Rotationswürfelproblems

3D-Koordinatenkonzept Wenn sich ein Element dreht...

UTF-8- und GB2312-Webkodierung

In letzter Zeit haben mich viele Studenten zur Ko...

Funktionsüberladung in TypeScript

Inhaltsverzeichnis 1. Funktionssignatur 2. Funkti...

So fügen Sie schnell 10 Millionen Datensätze in MySQL ein

Ich habe gehört, dass es eine Interviewfrage gibt...

Detaillierte Schritte zur Installation von ros2 in Docker

Inhaltsverzeichnis Hauptthema 1. Installieren Sie...

Meta Viewport ermöglicht die Vollbildanzeige von Webseiten auf dem iPhone

In meiner Verzweiflung dachte ich plötzlich: Wie i...