mikrocontroller.net

Forum: Compiler & IDEs Eclipse arm-elf-gdb Problem: Breakpoints nicht möglich :No line 274 in file


Autor: Joe Te (jote)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich bin gerade dabei ein ARM-Project für Eclipse aufzusetzen. Klappt 
soweit auch schon ganz gut. Ich kann auch (aus dem FLASH) debuggen. Nur 
beim Breakpoint setzen hackt es manchmal.
Wenn ich denn Zylin-Debugger frisch gestartet habe und mich mit "remote 
target x.x.x.x:2001" mit dem gdb-Server (BDI 2000) verbunden habe, kann 
ich im C-Code an manchen Stellen keinen Breakpoints setzen.
Erst wenn ich den Befehl 'stepi' eingebe und mit der Maus über den 
Funktionsnamen mit der Maus drüberfahre (es erscheint dabei ein 
Kontext-Bubble e.g. "test= {void()} 0xa022e54c <test>")
kann ich in der Funktion einen Breakpoint setzten. Meistens geht es dann 
auch bei anderen Funktionen im selben File.

Weiss jemand woran das liegen könnte? (Ev. wird die Symbol-Tabelle zu 
Anfang nicht komplett geladen?)
Und wenn ja, womit ich das beheben könnte? ;)

Gibt es eigentlich auch einen Befehl, mit dem nach dem Start des 
Debuggers der Programmcounter im Code angezeigt werden kann? Im Moment 
gebe ich immer 'stepi' an, damit mir eclipse die aktuelle PC-Stelle im 
Code anzeigt. Aber das muß ja auch eleganter gehen.

Ich bin leider (noch) ein gdb-Dau und fühle mich bei den tausenden 
gdb-Funktionen (noch) etwas verloren...

Danke schon mal im voraus!
Grüße
Joe

Verwendete Tools:
- eclipse-cpp-europa-fall2-win32.zip
- zylin Plugin 4.1.15
- BDI 2000 gdb
- ARM RVDS 2.2
- Selbstgeschriebener Eclipse ErrorParser-Plugin für RVCT 2.2 :)
- gnuMake
- arm-elf-gdb aus 
yagarto-bu-2.18_gcc-4.2.2-c-c++_nl-1.16.0_gdb-6.7.1_20071231.exe

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guck mal, ob der Compiler dir nicht ein paar Zeilen Code wegoptimiert...

Autor: Joe Te (jote)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Compileroptionen steht auf -o1, das sollte eigentlich nicht das 
Problem sein. Das Problem ist ja auch nicht, daß es gar nicht 
funktioniert, sondern halt nicht gleich zu Anfang. Erst wenn ich stepi 
im gdb eingebe und mit der Maus über den Funktionsname wandere 
funktioniert es bei manchen Code-Stellen. Bei manchen funktioniert es ja 
sogar auf anhieb. Seltsam, Seltsam ...

Autor: Joe Te (jote)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch mal was direkt in die Eclipse-Console eingetippt. Es wurde 
vorher nur ein 'target remote' durchgeführt.

Beim Erstenmal schlägt das Setzen eines Breakpoints in der Funktion 
function01 noch fehl ("break con_menu_example.c:248").
Dann lese ich den Kontext von function01 ("print function01").
Dannach kann ich den Breakpoint setzen ("break con_menu_example.c:248").

Keine Ahnung warum und weshalb, aber immerhin so würde es also 
prinzipell gehen. Nur bei 1000 Files ist das etwas mühsam ;) Gibt es 
nicht einen Befehl, den ich in die 'Initialize commands'-Liste vom Zylin 
debugger schreiben kann, der das für alle Files macht?

Thx
Joe


--------------------------
break con_menu_example.c:248
1397-interpreter-exec console "break con_menu_example.c:248"
&"No line 248 in file 
\"..\\..\\..\\n_system\\service\\example\\code\\con_menu_example.c\".\n"
No line 248 in file 
"..\..\..\n_system\service\example\code\con_menu_example.c".
1397^error,msg="No line 248 in file 
\"..\\..\\..\\n_system\\service\\example\\code\\con_menu_example.c\"."
(gdb)
1398-break-list
1398^done,BreakpointTable={nr_rows="0",nr_cols="6",hdr=[{width="3",align 
ment="-1",col_name="number",colhdr="Num"},{width="14",alignment="-1",col 
_name="type",colhdr="Type"},{width="4",alignment="-1",col_name="disp",co 
lhdr="Disp"},{width="3",alignment="-1",col_name="enabled",colhdr="Enb"}, 
{width="10",alignment="-1",col_name="addr",colhdr="Address"},{width="40" 
,alignment="2",col_name="what",colhdr="What"}],body=[]}
(gdb)
print function01
1399-interpreter-exec console "print function01"
~"$1 = {void (char *)} 0xa00ed5e4 <function01>"
$1 = {void (char *)} 0xa00ed5e4 <function01>~"\n"

1399^done
(gdb)
break con_menu_example.c:248
1400-interpreter-exec console "break con_menu_example.c:248"
~"Breakpoint 1 at 0xa00ed5e8: file 
..\\..\\..\\n_system\\service\\example\\code\\con_menu_example.c, line 
248.\n"
Breakpoint 1 at 0xa00ed5e8: file 
..\..\..\n_system\service\example\code\con_menu_example.c, line 248.
1400^done
(gdb)
1401-break-list
1401^done,BreakpointTable={nr_rows="1",nr_cols="6",hdr=[{width="3",align 
ment="-1",col_name="number",colhdr="Num"},{width="14",alignment="-1",col 
_name="type",colhdr="Type"},{width="4",alignment="-1",col_name="disp",co 
lhdr="Disp"},{width="3",alignment="-1",col_name="enabled",colhdr="Enb"}, 
{width="10",alignment="-1",col_name="addr",colhdr="Address"},{width="40" 
,alignment="2",col_name="what",colhdr="What"}],body=[bkpt={number="1",ty 
pe="breakpoint",disp="keep",enabled="y",addr="0xa00ed5e8",func="function 
01",file="..\\..\\..\\n_system\\service\\example\\code\\con_menu_example 
.c",fullname="D:/views/Novanto4/n_system/cpstack_siolks_src/lks/..\\..\\ 
..\\n_system\\service\\example\\code\\con_menu_example.c",line="248",tim 
es="0"}]}
(gdb)

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.