Wednesday 24 May 2017

Gdbserver Arm Binär Optionen

Vor einigen Tagen musste ich gdb manuell kompilieren, um eine arm-linux app zu debuggen Es ist ziemlich trivial, aber es ist so nützlich, dass ich dachte, es wäre eine schöne Idee, die Anweisungen hier zu veröffentlichen. Im Folgenden gibt es einige Erklärungen zum Debuggen mit der Fernbedienung KDevelop. This wurde mit gdb-6 8 getan, können Sie es hier ergreifen Es wird davon ausgegangen, dass Arm-Linux-Tools zur Verfügung stehen PATH korrekt setpiling der GDB-Client. Decompress gdb-6 8 und kompilieren sie durch issuing. Nach dem Kompilieren nur kopieren gdb gdb Zu arm-linux-gdb wo die arm-linux toolchain binaries wohnt dies ist rein für organisation und ordnungsgemäße benennung Du kannst jetzt das gdb-6 8-Verzeichnis entfernen. HINWEIS, wenn deine Host-Computer-Architektur nicht intel-basiert nur x86 durch die richtige ersetzen Wert für Ihre Plattformpiling der GDB-Server ARM. Decompress gdb-6 8 und kompilieren sie durch issuing. Nach dem Kompilieren nur kopieren gdb gdbserver gdbserver auf Ihr arm-linux-Dateisystem, so dass Sie es von einer Remote-Shell ausführen kann gdbserver wird ein Arm-Elf Binär Du kannst nun die g entfernen Db-6 8 directory. First der Server sollte in der Arm-Prozessor gestartet werden, indem sie etwas wie. Wo ausführbar ist die Anwendung, die wird gedebnet werden und Host 1234 sagt gdbserver zu hören, um Verbindungen zu Port 1234.To laufen gdb nur geben Dies in einer PC-Shell. Nachdem bekommst du die gdb-Eingabeaufforderung Um eine Verbindung zum Zieltyp herzustellen. Um die Ausführungstyp fortzusetzen, können Sie einen Überblick über die gdb-Nutzung erhalten. Debugging mit KDevelop. KDevelop kann verwendet werden, um Variablen zu sehen und zu debuggen Remote-Ziel Platz Breakpoints, Stop-Ausführung, etc Gehen Sie einfach zu Project - Project Options und stellen Sie sicher, dass Sie so etwas haben. Ist eine Datei, die die folgenden enthält. Nachdem sind Sie bereit, Remote-Debug jeder Arm-Linux-Anwendung. Ich bin neu für Linux Ich hatte Download gdb-7 5 aus Gnu-Resorts Ich baue gdb in Cygwin-Umgebung und ich habe einen Fehler Wie unten gezeigt. configure WARNUNG keine erweiterte Flüche Bibliothek gefunden Deaktivierung TUI Überprüfung für Bibliothek mit tgetent keine Konfigurationsfehler keine Termcap-Bibliothek gefunden 1 configure-gdb Fehler 1 make 1 Leaving Verzeichnis xyz xyz machen alle Fehler 2 xyz xyz. I hatte auch andere bezeichnet Thread und ich habe bereits installiert die ncurses-5 9 aber wenn ich wollte diese Datei dann habe ich die Fehlermeldung wie. collect2 ld zurückgegeben 1 Exit-Status machen 1 Fehler 1 machen 1 Leaving-Verzeichnis xyz xyz ncurses-5 9 c machen alle Fehler 2.Ich habe auch versucht, Termcap-Bibliothek herunterzuladen und es war erfolgreich, aber wenn ich gdb-7 5 bauen würde, dann zeigt es mir den gleichen Fehler wie oben beschrieben. So, wenn jemand hat Idee, wie man dieses Problem zu lösen, dann wäre es Sehr nett. Danke im voraus. Remote c Ross-target Debugging mit GDB und GDBserver. In Theorie, GDB der GNU-Debugger, kann die Chore von Debugging-Anwendungen auf einem Linux-basierten Embedded-System zu erleichtern In der Praxis ist die Einrichtung von GDB für diese Aufgabe ein bisschen eine Herausforderung, die es braucht Arbeit, und es gibt einige technische Hürden zu überwinden Allerdings sind die Vorteile von einem Weg, um methodisch zu debuggen ein Programm anstatt zu erraten, was falsch mit ihm weit überwiegen die Anstrengung beteiligt Hier sind einige Tipps für die Erleichterung der Schwierigkeiten - Geschlecht von GDB auf der Zielplattform, können Sie GDBserver ein Programm verwenden, mit dem Sie GDB auf einem anderen Rechner ausführen können als das, auf dem Ihr Programm läuft Der Vorteil von GDBserver ist, dass es nur einen Bruchteil der Zielressourcen benötigt Dass GDB verbraucht, weil es nur die Low-Level-Funktionalität des Debuggers implementiert - nämlich die Einstellung von Haltepunkten und den Zugriff auf die Zielprozessorregister und das Lesen des Schreibanwendungsspeichers GDBserver die Kontrolle über th E-Anwendung, die ausgetauscht wird, wartet dann auf Anweisungen von einer entfernten Instanz von GDB, die auf einer Entwicklungsarbeitsstation läuft. Typischerweise hat die Entwicklungsarbeitsstation einen anderen Prozessor, einen i686-Klassenprozessor als die Zielplattform, die ARM, PowerPC oder etwas anderes sein kann Dies bedeutet, dass Sie einfach die GDB-ausführbare Datei verwenden können, die auf der Workstation installiert ist - Sie wollen einen Cross-Target-Debugger. Mit anderen Worten: Sie müssen GDB aus dem Quellcode ausbilden. GDB abbauen. Das folgende Beispiel verwendet einen 7450 PowerPC Als Zielprozessor. Bevor Sie beginnen, benötigen Sie eine Kommunikationsschnittstelle zwischen dem PC mit GDB und der Zielplattform entweder eine serielle Verbindung oder vorzugsweise eine Ethernet-Netzwerkverbindung. Sie benötigen auch eine Cross-Target-Toolchain einen GNU C-Compiler zusammen mit einem C-Laufzeitbibliothek und binäre Dienstprogramme, aka binutils, die auf der Entwicklungsarbeitsstation ausgeführt werden und ausführbare Dateien für den Zielprozessor generieren Sie werden zwei Sätze von Binärdateien aus der GDB-Quelle erstellen Code. cross-target - wo der Host ist die Entwicklungs-Workstation und das Ziel ist die Ziel-Prozessor. native - wo sowohl Host und Ziel sind die Ziel-Prozessor. First Download der GDB-Quellcode komprimierten Archiv, und entpacken it. GDB Quellpaket nutzt das GNU-Build-System, bei dem die Generierung von Binärdateien in der Regel nur ein paar Befehle entfernt ist. Configure make make install Aber in unserem Fall ist es ein bisschen schwierig, Binaries für zwei verschiedene Host-Prozessoren zu bauen und die Binärdateien an verschiedenen Standorten zu installieren Ll baue die Binärdateien in ihren eigenen Verzeichnissen anstelle des Verzeichnisses, in das wir das Quellpaket entpackt haben. Außerdem verwenden wir die Befehlszeilenoptionen des configure scripts, um die Ziel - und Hostprozessoren und das Installationsverzeichnis prefix anzugeben Cross-Target-Binärdateien, spezifizieren die Zielarchitektur mit der Option --ziel Die Architekturkennung hier powerpc-7450-linux-gnu ist das Präfix aller Cross-Toolchain-Binärdateien hier th E Cross-Compiler Binär ist Powerpc-7450-linux-gnu-gcc. Building der Ziel-native Binärdateien ist schwieriger Für eine Sache müssen Sie die Host-Architektur wie die Zielarchitektur spezifizieren powerpc-7450-linux-gnu Ein weiteres Problem fehlt Bibliotheken - Einige Bibliotheken sind möglicherweise nicht in der Cross-Toolchain verfügbar und müssen gebaut werden, bevor Sie versuchen, eine Ziel-native GDB zu bauen. Dieses Beispiel zeigt, wie es gelingt, wenn Sie eine Ziel-native Termcap-Bibliothek finden fehlt, ist das Cross-Building etwas anders Hier - verwenden Sie configure --help, wenn im Zweifel. Eine letzte Frage zu prüfen ist, ob die Binärdateien statisch verknüpft werden sollen. Dies ist erforderlich, wenn die Zielplattform einige der gemeinsam genutzten Bibliotheken fehlt, die GDB und GDBserver für den normalen Betrieb abhängen Die daraus resultierenden ausführbaren Dateien sind viel größer als dynamisch verknüpft. Sie können die statische Verknüpfung angeben, indem Sie die Option - static zur LDFLAGS-Umgebungsvariablen hinzufügen, bevor Sie configure starten. Zusätzliche Bibliothek sollte auch angegeben werden D in beiden LDFLAGS und CPPFLAGS wie folgt. Der GNU-Linker wird einige Warnungen während des Build-Prozesses ausgeben Mit einigen Funktionen zum Beispiel dlopen, gethostbyname und ein paar mehr in statisch verknüpften Anwendungen erfordert zur Laufzeit die gemeinsamen Bibliotheken aus der GNU C Laufzeitbibliothek Version Verwendet für die Verknüpfung Möglicherweise müssen Sie diese Bibliotheken auf der Zielplattform installieren. Wenn Sie die GDBserver ausführbare Datei erstellt haben, kopieren Sie sie auf die Zielplattform Sie können einige Speicherplatz speichern, indem Sie alle Debug-Informationen von ihm zuerst mit dem powerpc-7450 abstreifen - linux-gnu-strip-Dienstprogramm. Das Anlegen der Build-Prozedur für einen anderen Zielprozessor sollte nur eine Frage der Verwendung eines anderen Architektur-Identifikators sein. Um das Debugging zu erleichtern, müssen Sie eine Anwendung mit Debug-Informationen kompilieren, indem Sie die Befehlszeilenoption - g zur Verfügung stellen Der Compiler-Linker Die daraus resultierende ausführbare Datei kann zu groß sein, um in den auf der Zielplattform verfügbaren Speicherplatz zu passen N Streifen Sie die Debug-Informationen aus einer Kopie davon mit Powerpc-7450-Linux-Gnu-Streifen und legen Sie die abgestreifte Kopie auf die Zielplattform Die abgestreifte Version wird mit GDBserver auf der Zielplattform ausgeführt und die nicht abgestreifte Kopie ist In GDB auf der Entwicklungs-Workstation geladen werden. Remote Debugging ist ziemlich einfach auf der Zielplattform, starten Sie die Anwendung mit GDBserver, während die Angabe der Host und Port für das Hören einer eingehenden TCP-Verbindung. Auf der Entwicklungs-Workstation, starten Sie das Cross-Ziel GDB. Beien Sie sicher, dass die nicht abgestreifte ausführbare Datei an der GDB-Konsole angegeben wird. Diese Befehle verbinden GDB mit dem GDBserver auf der Zielplattform, setzen einen Haltepunkt zu Beginn des Programms und lassen ihn laufen, bis er das erreicht Erstes Breakpoint. Sie ​​können auch GDBserver an einen Prozess anhängen, den bereits ausgeführt wird. Der Prozess wird dann gestoppt und du kannst ihn dann mit einem Remote-GDB. GDB-Befehl debuggen, wie erwartet beim Debuggen einer Remote-Anwendung mit einem Wenige Ausnahmen - vor allem der Laufbefehl wird nicht verwendet, da das Programm bereits läuft, wenn du die Debug-Session startet. Ein weiterer Wahnsinn ist, dass, wenn das Programm fortfahren darf, bis es ausläuft, dann wird der entfernte GDBserver auch beenden und Wird die Remote-Sitzung beendet. Einrichten einer funktionierenden Remote-Debugging-Umgebung scheint zu viel von Mühe zu einigen - schließlich nichts schlägt eine gut platzierte printf Aber mit GDB können Sie sowohl verfolgen und ändern Code und Datenfluss, und sonst analysieren Das Verhalten deines Codes, ohne explizit irgendwelche davon zu ändern Es doesn t magisch lösen Bugs, aber es sicher hilft. Gdbserver Arm Binary Trading. For diesem Grund habe ich beschlossen, die Upstream-Version zu kompilieren und diese zu verwenden Das Programm I ll Debug in diesem Beispiel ist die einfache GNU Hallo, das doesn t tut sehr viel über Druck Hallo Welt, sondern ist ein schönes Beispiel für Cross-Compilation mit GNU Autotools Gdbserver Arm Binary Trading gta 5 Multi-Ziel-Attentat Redwood Aktienhandel Do Wnload auf Zielpfad, aber der Remote-Pfad und Binärname muss noch angegeben werden, damit wir gdbserver sagen können, wo die Binärdatei befindet. Um diese Prozedur zu befolgen, installierte ich sudo apt-get install build-essential ddd cpio libncurses5-dev libsdl - Dev zlib1g-dev wget chmod x arm-2010q1-202 arm-2010q1-202I installierte die Toolchain im Standardverzeichnis. Code Sourcery Ich ging in einige Schwierigkeiten, also werde ich hier schreiben, die Prozedur, die für mich gearbeitet hat qemu-System-Arm ist die Software, die eine vielseitige PB-Plattform emuliert, die ich versucht habe, die zu verwenden, die über Ubuntu-Repositories das Paket installiert werden kann Ist qemu-kvm-extras aber es gefroren läuft die letzte Version von Linux 2 6 35.gdbserver ist ein Stück Software, die einige der GDB-Funktionalitäten implementiert die Debugging Stubs und bietet dann die Möglichkeit, eine vollständige GDB-Instanz über das Netzwerk zu verbinden Oder durch einen seriellen Port DS-5 zeigt gdbserver Fehler, wenn ich versuche, meine Android native Bibliothek zu debuggen C Application Binary Interface Standard für die ARM 64-Bit-Gdbserver Arm Binär Trading Forex Candlesticks Made Easy Pdf Die englischen Kolonien bestanden auf einer binären Nachfolgende Handlungen In 18 suchte, um den Handel durch die Begrenzung der Investitionen in den Import-Handel und R mwu Diese Gdbserver-Binär ist gebaut mit Aufgrund von L hat PIE Sicherheitskontrolle erzwungen, dies verursacht L kann nicht verwenden gdbserver Bin arm-linux-androideabi-gdb Als nächstes nehme ich die neueste Version von Busybox in einem früheren Tutorial Ich kompilierte es statisch, aber dieses Mal werde ich nicht, weil gdbserver, dass ich planen, braucht geteilte Bibliotheken sowieso Download auf Zielpfad, aber Der Remote-Pfad und der Binärname müssen noch angegeben werden, damit wir gdbserver erkennen können, wo sich die Binärdatei befindet. Der GDB-Server und der Client kommen aus der Code Sourcery-Compiler-Sammlung für ARM sowie dem Compiler, der für die Cross-Compile der Software für ARM verwendet wird. Der gdbserver ausführbar in meinem Fall kann auf dem Weg gefunden werden francesco Code Sourcery SourceryG Lite Arm-Nicht-linux-gnueabi libc usr bin gdbserver Gdbserver Arm Binär Trading wget tar xjf busybox-1 17 1bz2 cd busybox-1 17 1 machen ARCH Arm CROSSCOMPILE arm-none-linux-gnueabi - defconfig macht ARCH arm CROSSCOMPILE arm-none-linux-gnueabi - install cd Holen Sie sich Fxcms New To Forex Trading Guide Die englischen Kolonien bestanden auf einer binären Nachfolgende Handlungen in 18 suchten, um den Handel durch limi zu entmutigen Investitionen in den Importhandel und die Hauptmerkmale der GNU ARM Eclipse Familie von Plug-Ins sind zB Arm-Nicht-Eabi-Gcc, Compiler-Optionen und der richtige Weg zur Toolchain binär die SEGGER J-Link Sonde mit integriertem GDB Server, über das J-Link Plug-In Intraday Share Trading-Strategie Download auf Zielpfad, aber der Remote-Pfad und Binärname muss immer noch angegeben werden, damit wir gdbserver sagen können, wo die Binärdatei liegt Das Ergebnis ist ein komprimiertes Kernel-Image in Linux - 2 6 35 bogenarm boot z Bild Ich wollte gdbserver benutzen, um ein Programm in QEMU auszuführen und dann von einer GDB-Instanz, die auf meinem PC läuft, mit einem TCP-Link zu verbinden. Was ich erhalten wollte, ist in der folgenden Abbildung Gdbserver dargestellt Arm Binary Trading Forex Plattform auf Mac Die Farbe blau zeigt Software kompiliert auf meinem Ubuntu PC laufen 32-Bit x86, während die Farbe grün zeigt Software kompiliert auf ARM Gdbserver Arm Binary Trading laufen Beachten Sie, dass die folgende Prozedur in einem dedizierten f ausgeführt wird Älter und kein Root-Zugang ist von nun an erforderlich Ich wollte gdbserver verwenden, um ein Programm in QEMU laufen zu lassen, und dann kann ich sogar ein einfaches Hallo Weltprogramm im qemu-System-Arm ausführen, es sei denn, binär ist Zunächst einmal habe ich genommen Die neue Kernel-Version von den offiziellen Repositories. Kürzlich wollte ich debuggen ein Linux-Programm läuft in einem ARM-System emuliert mit QEMU Gdbserver Arm Binary Trading wget tar xzf qemu-0 12 5gz cd qemu-0 12 5 configure --enable-sdl - - disable-kvm --enable-debug --target-list arm-softmmu make cd Am Ende des Verfahrens ca. 1 Gigabyte Festplattenspeicher verwendet wurde Best Binary Options Broker mit 5 Minimalen Webseiten Uk Das relevante Ergebnis ist das Programm qemu -0 12 5 Arm-Softmmu qemu-System-Arm, die verwendet werden, um die vielseitige PB-Plattform zu emulieren. Post navigation. Recent Posts. Original text. Building GDB und GDBserver für Cross-Debugging.1 Problem Anweisung. Ich habe ein ARM GNU Linux Brett, und ich möchte in der Lage sein, Programme zu debuggen, die in ihm laufen, vom Komfort o F meine x8664 GNU Linux-Maschine Wie baue ich GDB und GDBserver für dieses Szenario Ich bin mit den Konfigurationsoptionen verwirrt Ich muss angeben Ich brauche zu kompilieren GDB für ARM zu Help.2 Build, Host, Ziel, was am meisten GNU-Programme, GDB verwendet Autoconf als Teil seiner Build-System. Hier s das Kapitel der GNU autoconf, automake und libtool Buch jeder Gebäude Cross-Tools sollte lesen, folgen Sie den richtigen Pfeilen. Speziell das Verständnis der Unterscheidung zwischen Build, Host und Ziel ist Entscheidend. Go auf lesen diese verknüpften Kapitel bitte Ich lerne Alright, weiter. Wenn das Denken in Bezug auf geparkt vor einer x8664 Maschine, sagen wir GDB läuft auf Ihrem Host-System, die x8664 GNU Linux-Maschine, während GDBserver läuft auf dem Ziel , Die ARM GNU Linux Board Machine. However, GDB und GDBserver sind separate Programme Sie werden separat gebaut, so dass wir die Build-Host-Ziel-Unterscheidung für jeden einzelnen Build-Schritt anwenden.3 Okay, wie gilt das für GDB und GDBserver dann. Du brauchst eine GDB, die r Uns auf x86 Mit autoconf configure verwenden Sie --host, um anzugeben, wo das Programm läuft Also in deinem Fall wäre das --host x8664-unknown-linux-gnu Allerdings, wenn das Programm soll auf dem gleichen System ausgeführt werden soll Bauen aus, dann musst du das nicht angeben, da configure dein System als Standard für --host automatisch auswählen wird. Was du brauchst, um es so zu machen, dass das gebildete GDB versteht, wie man ARM GNU Linux Programme debuggen Dies ist wo - - Target kommt zusammen Sagen Sie haben eine Arm-linux-gnueabi-gcc etc Cross Toolchain auf Ihrem x8664 Entwicklung Host, verwendet für den Bau von Programmen, die auf Ihrem ARM-Board Dateinamen laufen können variieren, auch für ARM GNU Linux aus der Compiler-Datei Name oder aus laufender Arm-linux-gnueabi-gcc - v suche die Ziellinie in der Ausgabe, wir sehen, dass gcc mit --target-arm-linux-gnueabi konfiguriert wurde. Wir passieren dasselbe - Zielschalter zu GDB s configure Done That s it, wirklich. Sie sehen so etwas wie dieses. Wenn Sie don t spezifizieren - Ziel dann die Konfiguration E script defaults das Zielsystem auf das gleiche System, das du neu bildest In diesem Fall wäre das x8664-unbekannt-linux-gnu was nicht was wir wollen.3 2 Für GDBserver. So geht GDBserver wieder auf die Zielmaschine, Die ARM GNU Linux eins Du kannst die Quellen über die ARM GNU Linux Maschine kopieren und dort bauen. Der Standardpfad zu gdb gdbserver konfigurieren make make install wird gut funktionieren. Jedoch willst du GDBserver im Komfort deines x8664 GNU bauen Linux-Host Sie haben einen ARM Cross Compiler praktisch praktisch, rechts Rekapital von Autoconf s Build Host Ziel Unterscheidung, --host wird verwendet, um festzulegen, wo das Programm läuft Bingo Da GDBserver auf ARM laufen wird, passieren Sie --host Arm-Linux - Gnueabi zu GDBserver s konfigurieren Du bekommst so etwas wie. Aber warum nicht - treffe Okay, du musst die Build-Host-Ziel-Unterscheidung wieder lesen - das ist nicht wirklich sinnvoll für GDBserver, denn es ist kein Cross-Tool - es weiß, wie man die Programme auf seinem eigenen System debuggen kann S nicht anders als die meisten anderen Programme, die auf dem ARM-System laufen, wie grep, sed, etc, so dass Sie kreuzen bauen es genau wie alle anderen autoconf configure programme.4 Fehlersuche.4 1 make verwendet System compiler. Wenn Sie mit - Host-Host, sondern macht das System s gcc anstelle von Host-gcc stellen Sie sicher, dass diese in Ihrem PATH gefunden werden kann und dass Sie es ausführen können zB versuchen arm-unknown-linux-gnueabi-gcc - v, und starten Sie über Der Grund Ist das, wenn configure doesn t einen nutzbaren host-gcc findet, dann fällt es zurück zu gcc Sehen Sie hier für mehr info.5 Auf separaten build dirs. Final Note Sie don t müssen, aber ich empfehle den Aufbau auf einem separaten Build-Verzeichnis aus dem Quellen Like. Build Verzeichnis für gdb in gdb build-gdb. Build Verzeichnis für gdbserver in gdb build-gdbserver. Cd in Gdb build-gdbserver und do src gdb gdbserver configure. This Weg, zu jeder Zeit, die Sie wollen, um einen Build von Grund auf zu machen, müssen Sie nur rm - rf die Build-Verzeichnisse. Es ist nicht so lange Lernen dieses Zeug richtig wird in übersetzen Cross-Gebäude alle Arten von GNU Autoconf-basierte Programme und Bibliotheken, so ist es eine Fähigkeit wert zu. Andere, um zu recap. For GDB, konfigurieren - Ziel Arm-linux-gnueabi Führen Sie die toplevel konfigurieren für diesen Pfad zu gdb-src konfigurieren. Für GDBserver konfigurieren --host arm-linux-gnueabi Führen Sie GDBserver s konfigurieren für diesen Pfad zu gdb-src gdb gdbserver configure. None BuildingCrossGDBandGDBserver PedroAlves 2015-08-14 16 26 41.All Inhalt C 2008 Freie Software Foundation Für Nutzungsbedingungen , Umverteilung und Modifikation finden Sie auf der WikiLicense Seite.21 GDB und OpenOCD. OpenOCD entspricht dem Remote-GDB-Server-Protokoll und kann so verwendet werden, um Remote-Ziele zu debuggen Das Einrichten von GDB für die Arbeit mit OpenOCD kann mehrere Komponenten beinhalten. Das OpenOCD Serverunterstützung f Oder GDB muss möglicherweise konfiguriert werden Siehe GDB Configuration. GDB s Unterstützung für OpenOCD kann Konfiguration benötigen, wie in diesem Kapitel gezeigt. Wenn Sie eine GUI-Umgebung wie Eclipse haben, wird das wahrscheinlich auch konfiguriert werden. Natürlich ist die Version von GDB Sie verwenden müssen eine, die gebaut wurde, um über die Ziel-CPU wissen Sie re verwenden Es ist wahrscheinlich Teil der Werkzeugkette Sie re verwenden Zum Beispiel, wenn Sie Cross-Entwicklung für ARM auf einem x86-PC, stattdessen tun Wenn du den nativen x86-gdb-Befehl benutzt hast, kannst du arm-none-eabi-gdb verwenden, wenn das die Werkzeugkette verwendet hat, um deinen Code zu kompilieren.21 1 Verbinden mit GDB. Use GDB 6 7 oder neuer mit OpenOCD, wenn du in Schwierigkeiten gehst GDB 6 3 hat einen bekannten Bug, der gefälschte Speicherzugriffsfehler erzeugt, die seither behoben worden ist. OpenOCD kann mit GDB auf zwei Arten kommunizieren. Eine Socket-TCP-IP-Verbindung wird typischerweise wie folgt gestartet. Dies würde dazu führen, dass GDB eine Verbindung zum gdbserver herstellt Auf dem lokalen PC mit Port 3333.Es ist auch möglich, die GDB e zu verwenden Xtended Remote-Protokoll wie folgt. Die Rohrverbindung wird in der Regel wie folgt gestartet. Dies würde dazu führen, dass GDB OpenOCD laufen und kommunizieren mit Pipes stdin stdout Mit dieser Methode hat den Vorteil von GDB Start Stoppen OpenOCD für die Debug-Session Logoutput sendet die Log-Ausgabe an ein Datei, um sicherzustellen, dass die Pipe nicht gesättigt ist, wenn Sie höhere Debug-Level-Ausgänge verwenden. Um die verfügbaren OpenOCD-Befehle aufzurufen, geben Sie Monitor-Hilfe auf der GDB-Befehlszeile ein.21 2 Sample-GDB-Session-Startup. Mit dem Remote-Protokoll beginnen die GDB-Sessions etwas anders als Sie tun, wenn Sie lokal debuggen Hier ist ein Beispiel, wie man eine Debug-Session mit einem kleinen ARM-Programm starten In diesem Fall wurde das Programm verknüpft, um in SRAM auf einem Cortex-M3 geladen zu werden. Die meisten Programme würden in die Flash-Adresse 0 und geschrieben werden Laufen Sie von dort aus. Sie könnten dann die GDB-Sitzung unterbrechen, um das Programm zu brechen, geben Sie dort ein, wo der Stapel angezeigt werden soll, Liste, um den Code um den Programmzähler zu zeigen, Schritt Code, Set breakpoin Ts oder Watchpoints und so weiter.21 3 Konfigurieren von GDB für OpenOCD. OpenOCD unterstützt das gdb qSupported Paket, so dass Informationen vom GDB Remote Server gesendet werden können, dh OpenOCD to GDB Typische Informationen enthalten Paketgröße und die Speicherkarte des Gerätes Sie müssen die Paketgröße nicht von Hand konfigurieren, und die relevanten Teile der Speicherkarte sollten automatisch eingerichtet werden, wenn Sie NOR-Flash-Banken deklarieren. Jedoch gibt es noch andere Dinge, die GDB momentan abfragen kann Hand Als OpenOCD startet, werden Sie oft sehen, eine Zeile berichtet etwas wie. Sie können diese Informationen an GDB mit diesen Befehlen übergeben. Mit dieser besonderen Hardware Cortex-M3 die Hardware-Breakpoints nur für Code ausgeführt aus Flash-Speicher Die meisten anderen ARM-Systeme zu tun Haben keine solchen Einschränkungen. Ein anderes Beispiel für nützliche GDB-Konfiguration kam von einem Benutzer, der gefunden, dass einzelne Stepping seine Cortex-M3 didn t gut mit IRQs und ein RTOS, bis er GDB sagte, um die IRQs deaktivieren, während ste Pping. Anstatt diese Befehle interaktiv zu schreiben, können Sie es vorziehen, sie in einer Datei zu speichern und GDB sie auszuführen, wenn sie anfängt, vielleicht mit einem in Ihrem Projektverzeichnis oder mit GDB mit gdb - x Dateiname beginnen. 4 4 Programmierung mit GDB. By Voreinstellung wird die Zielspeicherabbildung an GDB gesendet. Dies kann durch die folgende OpenOCD-Konfigurationsoption deaktiviert werden. Damit dies korrekt funktioniert, muss auch eine gültige Flash-Konfiguration in OpenOCD gesetzt werden. Für eine schnellere Leistung sollten Sie auch einen gültigen Arbeitsbereich konfigurieren. Informing GDB of Die Speicherkarte des Ziels ermöglicht es GDB, alle Blitzbereiche des Ziels zu schützen und Hardware-Haltepunkte standardmäßig zu verwenden. Dies bedeutet, dass die OpenOCD-Option gdbbreakpointoverride bei der Verwendung einer Speicherkarte nicht benötigt wird Siehe gdbbreakpointoverride. Um die konfigurierte Speicherkarte in GDB anzuzeigen, Verwenden Sie die GDB-Befehlsinformation mem Alle anderen nicht zugewiesenen Adressen innerhalb von GDB werden als RAM. GDB 6 8 und höher eingestellt, um einen Speicherbereich nicht in der Speicherkarte als unzugänglich einzustellen. Dies kann ch sein Anged auf das alte Verhalten mit dem folgenden GDB-Befehl. Wenn gdbflashprogramm-Freigabe auch verwendet wird, kann GDB jeden Flash-Speicher mit der vFlash-Schnittstelle programmieren. GDB schaut auf die Zielspeicher-Map, wenn ein Ladebefehl gegeben wird, falls vorhanden Bereiche, die programmiert werden sollen, liegen innerhalb des Ziel-Flash-Bereichs. Die vFlash-Pakete werden verwendet. Wenn das Ziel vor der GDB-Programmierung konfiguriert werden muss, kann ein Ereignisskript ausgeführt werden. Um eine Flash-Programmierung zu überprüfen, können die GDB-Befehlsvergleichsabschnitte verwendet werden.21 5 Verwenden von OpenOCD SMP mit GDB. For SMP Unterstützung nach GDB serielle Protokoll Paket wurden definiert. j - smp Status request. J - smp set request. jc Paket zum Lesen Kern ID angezeigt durch GDB Verbindung Antwort ist XXXXXXXX 8 hex Ziffern geben Kern ID oder E01 für Ziel nicht smp. JcXXXXXXXX 8 Hex-Ziffern Paket für die Einstellung der Core-ID, die bei der nächsten GDB angezeigt wird, fortsetzen Kern id -1 ist für die Rückkehr in den normalen Wiederaufnahme-Modus reserviert Antwort E01 für Ziel nicht smp oder OK auf Erfolg. Handling dieses Pakets innerhalb GDB Kann durch die Erstellung einer internen Variablen, dh des Kerns, durch die Funktion, die den berechneten Wert zuordnen kann, erlauben, den folgenden GDB-Befehl zuzulassen. Durch die Verwendung des GDB-Wartungsbefehls wie im folgenden Beispiel 2 cpus in SMP mit Core-ID 0 und 1 beschrieben, siehe CPU-Ziele definieren In SMP.21 6 RTOS Support. OpenOCD beinhaltet RTOS-Unterstützung, dies muss jedoch aktiviert werden, da es standardmäßig deaktiviert ist. Es kann aktiviert werden, indem es - rtos arg an das Ziel weiterleitet. Siehe RTOS Type. See Debugging Programme mit mehreren Threads im GDB-Handbuch für Details Über relevante GDB-Befehle. Ein Beispiel-Setup ist unten. Dies wird versuchen, automatisch erkennen, die RTOS in Ihrer Anwendung. Currently unterstützt rtos s include. Note Bevor ein RTOS erkannt werden kann, muss es exportieren bestimmte Symbole ansonsten kann es nicht von OpenOCD verwendet werden Unten ist eine Liste der benötigten Symbole für jedes unterstützte RTOS. txthreadcurrentptr, txthreadcreatedptr, txthreadcreatedcount. FreeRTOS Symbole linux symbols. rlist, chdebug, chSysInit. Rtos sCurrentTask, Rtos sLi Rtos sListSuspended, Rtos sMPProritäten, Rtos sCurrentTaskCount. OSRunning, OSTCBCurPtr, OSTaskDbgListPtr, OSTaskQty. Für die meisten RTOS unterstützt die oben genannten Symbole werden standardmäßig exportiert Für einige, zB FreeRTOS und uC OS-III, müssen zusätzliche Schritte sein Genommen. Diese RTOSes können zusätzliche OpenOCD-spezifische Datei verlangen, die zusammen mit dem Projekt verknüpft werden soll.


No comments:

Post a Comment