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


von Daniel F. (franken_3)


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
1
Continuing...
2
3
[debug]Program received signal SIGINT, Interrupt.
4
[debug]0x08004c8c in C_DO::operator=(bool) ()
5
[debug]>>>>>>cb_gdb:
6
7
Program received signal SIGINT, Interrupt.
8
9
[debug]> break "/home/sean/Programmierung/iCBox/iCBox/src/main.cpp:41"
10
[debug]No source file named /home/sean/Programmierung/iCBox/iCBox/src/main.cpp.
11
[debug]Breakpoint 2 ("/home/sean/Programmierung/iCBox/iCBox/src/main.cpp:41") pending.
12
[debug]>>>>>>cb_gdb:
13
[debug]> cont
14
[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)


Lesenswert?


von Daniel F. (franken_3)


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
1
Building to ensure sources are up-to-date
2
Selecting target: 
3
Debug
4
Adding source dir: /home/sean/Dokumente/iCBox/
5
Adding source dir: /home/sean/Dokumente/iCBox/
6
Adding file: /home/sean/Dokumente/iCBox/bin/Debug/iCBox
7
Changing directory to: /home/sean/Dokumente/iCBox/.
8
Set variable: LD_LIBRARY_PATH=.:/home/sean/Dokumente/iCBox/linker:
9
10
[debug]Command-line: /usr/bin/arm-none-eabi-gdb -nx -fullname  -quiet  -args /home/sean/Dokumente/iCBox/bin/Debug/iCBox
11
[debug]Working dir : /home/sean/Dokumente/iCBox
12
13
Starting debugger: /usr/bin/arm-none-eabi-gdb -nx -fullname  -quiet  -args /home/sean/Dokumente/iCBox/bin/Debug/iCBox
14
done
15
16
[debug]Reading symbols from /home/sean/Dokumente/iCBox/bin/Debug/iCBox...
17
[debug]done.
18
[debug](gdb) 
19
[debug]> set prompt >>>>>>cb_gdb:
20
21
Registered new type: wxString
22
Registered new type: STL String
23
Registered new type: STL Vector
24
Connecting to remote target
25
Setting breakpoints
26
27
[debug]>>>>>>cb_gdb:
28
[debug]> show version
29
[debug]GNU gdb (7.6.50.20131218-0ubuntu1+1) 7.6.50.20131218-cvs
30
[debug]Copyright (C) 2013 Free Software Foundation, Inc.
31
[debug]License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
32
[debug]This is free software: you are free to change and redistribute it.
33
[debug]There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
34
[debug]and "show warranty" for details.
35
[debug]This GDB was configured as "--host=x86_64-linux-gnu --target=arm-none-eabi".
36
[debug]Type "show configuration" for configuration details.
37
[debug]For bug reporting instructions, please see:
38
[debug]<http://www.gnu.org/software/gdb/bugs/>.
39
[debug]Find the GDB manual and other documentation resources online at:
40
[debug]<http://www.gnu.org/software/gdb/documentation/>.
41
[debug]For help, type "help".
42
[debug]Type "apropos word" to search for commands related to "word".
43
[debug]>>>>>>cb_gdb:
44
[debug]> set confirm off
45
46
Debugger name and version: GNU gdb (7.6.50.20131218-0ubuntu1+1) 7.6.50.20131218-cvs
47
48
[debug]>>>>>>cb_gdb:
49
[debug]> set width 0
50
[debug]>>>>>>cb_gdb:
51
[debug]> set height 0
52
[debug]>>>>>>cb_gdb:
53
[debug]> set breakpoint pending on
54
[debug]>>>>>>cb_gdb:
55
[debug]> set print asm-demangle on
56
[debug]>>>>>>cb_gdb:
57
[debug]> set unwindonsignal on
58
[debug]>>>>>>cb_gdb:
59
[debug]> set print elements 0
60
[debug]>>>>>>cb_gdb:
61
[debug]> set disassembly-flavor intel
62
[debug]No symbol "disassembly" in current context.
63
[debug]>>>>>>cb_gdb:
64
[debug]> catch throw
65
[debug]Catchpoint 1 (throw)
66
[debug]>>>>>>cb_gdb:
67
[debug]> source /usr/share/codeblocks/scripts/stl-views-1.0.3.gdb
68
[debug]>>>>>>cb_gdb:
69
[debug]> directory /home/sean/Dokumente/iCBox/
70
[debug]Source directories searched: /home/sean/Dokumente/iCBox:$cdir:$cwd
71
[debug]>>>>>>cb_gdb:
72
[debug]> target remote tcp:localhost:3333
73
[debug]Queued:[tty /dev/pts/0]
74
[debug]Remote debugging using tcp:localhost:3333
75
[debug]0x00000000 in ?? ()
76
[debug]>>>>>>cb_gdb:
77
78
Connected
79
80
[debug]> monitor halt
81
82
In ?? () ()
83
84
[debug]> monitor halt
85
[debug]target was in unknown state when halt was requested
86
[debug]target state: halted
87
[debug]target halted due to debug-request, current mode: Thread 
88
[debug]xPSR: 0x410f0000 pc: 0x08006024 msp: 0x2001fff8
89
[debug]>>>>>>cb_gdb:>>>>>>cb_gdb:
90
[debug]> load ./bin/Debug/iCBox.bin
91
[debug]"./bin/Debug/iCBox.bin" is not an object file: File format not recognized
92
[debug]>>>>>>cb_gdb:
93
[debug]> file ./bin/Debug/iCBox.bin
94
[debug]"/home/sean/Dokumente/iCBox/./bin/Debug/iCBox.bin": not in executable format: File format not recognized
95
[debug]>>>>>>cb_gdb:
96
[debug]> monitor sleep 1000
97
[debug]>>>>>>cb_gdb:
98
[debug]> monitor reset
99
[debug]>>>>>>cb_gdb:
100
[debug]> tty /dev/pts/0
101
[debug]>>>>>>cb_gdb:
102
[debug]> bt 30
103
[debug]#0  0x00000000 in ?? ()
104
[debug]#1  0x00000000 in ?? ()
105
[debug]>>>>>>cb_gdb:

von Daniel F. (franken_3)


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)


Lesenswert?

>Weis jemand wie ich dem gdb eine Symboltabelle mitgeben kann?

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

von Daniel F. (franken_3)


Lesenswert?

Hi, Danke für den Hinweis.

Habe das file geladen
1
~/Dokumente/iCBox/bin/Debug$ file iCBox
2
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)


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)


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:
1
[debug]> break "/home/sean/temp/iCBox/iCBox/src/main.cpp:30"
2
[debug]No source file named /home/sean/temp/iCBox/iCBox/src/main.cpp.
3
[debug]Breakpoint 2 ("/home/sean/temp/iCBox/iCBox/src/main.cpp:30") pending.
4
[debug]>>>>>>cb_gdb:
5
[debug]> cont
6
[debug]Continuing.

: Bearbeitet durch User
von Daniel F. (franken_3)


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!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.