Forum: Mikrocontroller und Digitale Elektronik STM32F4 - Debbuging mit GDB/openOCD funktioniert nicht?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Daniel F. (franken_3)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mal wieder ein Problem mit meinem STM32F407VG Discovery Board.

Ich habe mittlerweile erfolgreich mein Programm unter Linux zum laufen 
gebracht und es erfolgreich mit st-flash auf den yC geladen.

Jetzt habe ich mir openocd und den gdb-arm-none-eabi geladen in der 
Hoffnung ich kann meinen Code nun auch noch anschaulich Debbugen.

Leider aber Stopt der Debbuger nicht wenn ich in der IDE (CodeBlocks) 
Haltepunkte setze??

Eine Verbindung scheint zu bestehen, denn wenn ich den Debbuger auf 
Pause stelle bleibt auch das Anwenderprogramm stehen, entsprechend bei 
Fortsetzen lauft es weiter.

Ich bekomme folgende Meldung im Debug-Window

Continuing...

[debug]Program received signal SIGINT, Interrupt.
[debug]0x08004c8c in C_DO::operator=(bool) ()
[debug]>>>>>>cb_gdb:

Program received signal SIGINT, Interrupt.

[debug]> break "/home/sean/Programmierung/iCBox/iCBox/src/main.cpp:41"
[debug]No source file named /home/sean/Programmierung/iCBox/iCBox/src/main.cpp.
[debug]Breakpoint 2 ("/home/sean/Programmierung/iCBox/iCBox/src/main.cpp:41") pending.
[debug]>>>>>>cb_gdb:
[debug]> cont
[debug]Continuing.



Diese Zeile

[debug]No source file named /home/sean/Programmierung/iCBox/iCBox

verstehe ich nicht. Das file ist sehr wohl an diesem Pfad???

Hat jemand vielleicht eine Idee wo hier der Fehler liegt?

Danke

von Stefan O. (stefano)


Bewertung
0 lesenswert
nicht lesenswert

von Daniel F. (franken_3)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe die Option -g fuer Debug Symbole aktiviert.
Habe jetzt mal einen anderen Rechner mit Ubuntu genommen, hier habe ich 
aktuell folgende Parameter bei Additional GDB Commands - After 
Connection


monitor halt
load ./bin/Debug/iCBox.bin
file ./bin/Debug/iCBox.bin
monitor sleep 1000
monitor reset



Habe diese Optionen aus einem Internet-Beispiel abgeschrieben.

Ich kann das Programm jederzeit mit der Pause Taste stoppen und auch 
wieder weiter laufen lassen. Nur leider nicht mit Haltepunkten an einer 
Bestimmten Stelle???

Weis jemand was da noch fehlt? Vermutlich irgendeine Information über 
den Quellcode oder so, könnte mir vorstellen das es an sowas liegt.

Danke schon mal

Hier mal meine Ausgabe wenn ich das Debbugen starte, eventuell fällt da 
ja jemanden noch was auf? Ich weis leider nicht genau was die Ausgabe im 
einzelnen bedeuten soll, leider...





Hier die Ausgabe des GDB

Building to ensure sources are up-to-date
Selecting target: 
Debug
Adding source dir: /home/sean/Dokumente/iCBox/
Adding source dir: /home/sean/Dokumente/iCBox/
Adding file: /home/sean/Dokumente/iCBox/bin/Debug/iCBox
Changing directory to: /home/sean/Dokumente/iCBox/.
Set variable: LD_LIBRARY_PATH=.:/home/sean/Dokumente/iCBox/linker:

[debug]Command-line: /usr/bin/arm-none-eabi-gdb -nx -fullname  -quiet  -args /home/sean/Dokumente/iCBox/bin/Debug/iCBox
[debug]Working dir : /home/sean/Dokumente/iCBox

Starting debugger: /usr/bin/arm-none-eabi-gdb -nx -fullname  -quiet  -args /home/sean/Dokumente/iCBox/bin/Debug/iCBox
done

[debug]Reading symbols from /home/sean/Dokumente/iCBox/bin/Debug/iCBox...
[debug]done.
[debug](gdb) 
[debug]> set prompt >>>>>>cb_gdb:

Registered new type: wxString
Registered new type: STL String
Registered new type: STL Vector
Connecting to remote target
Setting breakpoints

[debug]>>>>>>cb_gdb:
[debug]> show version
[debug]GNU gdb (7.6.50.20131218-0ubuntu1+1) 7.6.50.20131218-cvs
[debug]Copyright (C) 2013 Free Software Foundation, Inc.
[debug]License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
[debug]This is free software: you are free to change and redistribute it.
[debug]There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
[debug]and "show warranty" for details.
[debug]This GDB was configured as "--host=x86_64-linux-gnu --target=arm-none-eabi".
[debug]Type "show configuration" for configuration details.
[debug]For bug reporting instructions, please see:
[debug]<http://www.gnu.org/software/gdb/bugs/>.
[debug]Find the GDB manual and other documentation resources online at:
[debug]<http://www.gnu.org/software/gdb/documentation/>.
[debug]For help, type "help".
[debug]Type "apropos word" to search for commands related to "word".
[debug]>>>>>>cb_gdb:
[debug]> set confirm off

Debugger name and version: GNU gdb (7.6.50.20131218-0ubuntu1+1) 7.6.50.20131218-cvs

[debug]>>>>>>cb_gdb:
[debug]> set width 0
[debug]>>>>>>cb_gdb:
[debug]> set height 0
[debug]>>>>>>cb_gdb:
[debug]> set breakpoint pending on
[debug]>>>>>>cb_gdb:
[debug]> set print asm-demangle on
[debug]>>>>>>cb_gdb:
[debug]> set unwindonsignal on
[debug]>>>>>>cb_gdb:
[debug]> set print elements 0
[debug]>>>>>>cb_gdb:
[debug]> set disassembly-flavor intel
[debug]No symbol "disassembly" in current context.
[debug]>>>>>>cb_gdb:
[debug]> catch throw
[debug]Catchpoint 1 (throw)
[debug]>>>>>>cb_gdb:
[debug]> source /usr/share/codeblocks/scripts/stl-views-1.0.3.gdb
[debug]>>>>>>cb_gdb:
[debug]> directory /home/sean/Dokumente/iCBox/
[debug]Source directories searched: /home/sean/Dokumente/iCBox:$cdir:$cwd
[debug]>>>>>>cb_gdb:
[debug]> target remote tcp:localhost:3333
[debug]Queued:[tty /dev/pts/0]
[debug]Remote debugging using tcp:localhost:3333
[debug]0x00000000 in ?? ()
[debug]>>>>>>cb_gdb:

Connected

[debug]> monitor halt

In ?? () ()

[debug]> monitor halt
[debug]target was in unknown state when halt was requested
[debug]target state: halted
[debug]target halted due to debug-request, current mode: Thread 
[debug]xPSR: 0x410f0000 pc: 0x08006024 msp: 0x2001fff8
[debug]>>>>>>cb_gdb:>>>>>>cb_gdb:
[debug]> load ./bin/Debug/iCBox.bin
[debug]"./bin/Debug/iCBox.bin" is not an object file: File format not recognized
[debug]>>>>>>cb_gdb:
[debug]> file ./bin/Debug/iCBox.bin
[debug]"/home/sean/Dokumente/iCBox/./bin/Debug/iCBox.bin": not in executable format: File format not recognized
[debug]>>>>>>cb_gdb:
[debug]> monitor sleep 1000
[debug]>>>>>>cb_gdb:
[debug]> monitor reset
[debug]>>>>>>cb_gdb:
[debug]> tty /dev/pts/0
[debug]>>>>>>cb_gdb:
[debug]> bt 30
[debug]#0  0x00000000 in ?? ()
[debug]#1  0x00000000 in ?? ()
[debug]>>>>>>cb_gdb:


von Daniel F. (franken_3)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe das ganze nochmal ohne openOCD , sondern mit st-util probiert.

Selbes Ergebnis leider.

Wenn ich das Programm stoppe mit der Pause Taste in CodeBlocks dann 
bekomme ich folgende Ausgabe:

Program received signal SIGTRAP, Trace/breakpoint trap.
In CSchrittkette::Clock () ()

[debug]> info locals
[debug]No symbol table info available.
[debug]>>>>>>cb_gdb:
[debug]> info args
[debug]No symbol table info available.
[debug]>>>>>>cb_gdb:
[debug]> whatis Stoss1
[debug]No symbol "Stoss1" in current context.
[debug]>>>>>>cb_gdb:
[debug]> bt 30
[debug]#0  0x0800499c in CSchrittkette::Clock ()
[debug]#1  0x08006024 in main ()
[debug]>>>>>>cb_gdb:


Da steht ja, das er keine Symbol-Table hat? Möglicherweise ist das die 
Ursache?
Weis jemand wie ich dem gdb eine Symboltabelle mitgeben kann?

Danke

von holger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>Weis jemand wie ich dem gdb eine Symboltabelle mitgeben kann?

Ja, lade eine *.elf Datei und keine *.bin.

von Daniel F. (franken_3)


Bewertung
0 lesenswert
nicht lesenswert
Hi, Danke für den Hinweis.

Habe das file geladen
~/Dokumente/iCBox/bin/Debug$ file iCBox
iCBox: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped

Aber leider funktioniert es noch immer nicht??

Start-Stop funktioniert, aber ich bekomme keine Anzeige (kleiner Pfeil 
am Rand oder ähnliches) wo sich das Programm gerade befindent.?


Ich verstehe es nicht ganz, der file Befehl lädt das .elf file,

aber wenn ich einen Break-Point setzte, wieder kein Source-File zu 
finden, obwohl es genau unter dem Pfad vorhanden ist :/



[debug]> break "/home/sean/Dokumente/iCBox/src/main.cpp:44"
[debug]No source file named /home/sean/Dokumente/iCBox/src/main.cpp.
[debug]Breakpoint 3 ("/home/sean/Dokumente/iCBox/src/main.cpp:44") 
pending.
[debug]>>>>>>cb_gdb:
[debug]> cont
[debug]Continuing.

: Bearbeitet durch User
von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Hast Du auch mal einfach "break main.cpp:44" probiert, d.h. ohne die 
ganzen Pfade?

Ist Dein Programm wirklich in C++ geschrieben?

von Daniel F. (franken_3)


Bewertung
0 lesenswert
nicht lesenswert
Jim Meba schrieb:
> Hast Du auch mal einfach "break main.cpp:44" probiert, d.h. ohne die
> ganzen Pfade?
>
> Ist Dein Programm wirklich in C++ geschrieben?

Hi, ja ich verwende etlich Sprachelemente von C++, Klassen, abgeleitete 
Klassen, abstrakte Klassen usw..

hab die manuelle Eingabe gefunden für gdb-Befehle

Leider auch kein Erfolg:

[/code]
> break main.cpp:44

[debug]> break main.cpp:44
[debug]No source file named main.cpp.
[debug]Breakpoint 3 (main.cpp:44) pending.
[debug]>>>>>>cb_gdb:

No source file named main.cpp.
Breakpoint 3 (main.cpp:44) pending.

[/code]

Vielleicht jemand noch eine Idee was da sein könnte??
Danke

Mein Problem ist leider nach wie vor:

[debug]> break "/home/sean/temp/iCBox/iCBox/src/main.cpp:30"
[debug]No source file named /home/sean/temp/iCBox/iCBox/src/main.cpp.
[debug]Breakpoint 2 ("/home/sean/temp/iCBox/iCBox/src/main.cpp:30") pending.
[debug]>>>>>>cb_gdb:
[debug]> cont
[debug]Continuing.


: Bearbeitet durch User
von Daniel F. (franken_3)


Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

ich habe den Fehler gefunden. Man muss unter den Projekteinstellungen 
beim Linker ebenfalls die Option -g angeben.

Ich hatte diese nur beim Compiler angewählt, jetzt geht es wie es soll.

Danke für eure Hilfe und die Tipps!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.