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


von Joe T. (jote)


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

von Sven P. (Gast)


Lesenswert?

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

von Joe T. (jote)


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

von Joe T. (jote)


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)

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.