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
Guck mal, ob der Compiler dir nicht ein paar Zeilen Code wegoptimiert...
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 ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.