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.