Hallo Leute
Ich habe ein kleines C++-Programm geschrieben um den GDB zu testen. Der Befehl Step beim GDB scheint nicht das zu tun was er sollte. Ich habe mich etwas mit $man gdb und $man g++ beschäftigt und bin der Meinung, dass es wohl an den Optionen für den Compiler in meinem Makefile liegt. Aber welche? Wer kann mir da weiterhelfen?
Dank und Gruss d-oli
MAKEFILE
----------------
CXX = g++
LDFLAGS = -g -pedantic -W -Wall
.PHONY: all clean
all: gdbtest
gdbtest.o: gdbtest.cpp
$(CXX) -O2 -c gdbtest.cpp
gdbtest: gdbtest.o
$(CXX) -o gdbtest $(LDFLAGS) gdbtest.o
GDB:
-------
$ gdb gdbtest
GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
... u.s.w. ...
(gdb) help step
Step program until it reaches a different source line.
Argument N means do this N times (or till program stops for another reason).
(gdb) break main
Breakpoint 1 at 0x804860d
(gdb) run
Starting program: /home/omueller/cpp/gdbtest1/gdbtest
Breakpoint 1, 0x0804860d in main ()
(gdb) step
Single stepping until exit from function main, // Wieso ist die nicht vorhanden?
which has no line number information. // Wegen der Debugoptionen
textA : Hallo Welt
textB :
textA :
textB : Hallo Welt
0x42015574 in __libc_start_main () from /lib/tls/libc.so.6
C++-Source
---------------
int main(){
int counter;
char textA[] = "Hallo Welt", textB[sizeof(textA)] = "";
std::cout<<"textA : "<<textA<<std::endl;
std::cout<<"textB : "<<textB<<std::endl<<std::endl;
for( counter = 0; textA[counter] != 0; counter ++ ){
textB[counter] = textA[counter];
textA[counter] = 0;
}
std::cout<<"textA : "<<textA<<std::endl;
std::cout<<"textB : "<<textB<<std::endl<<std::endl;
return 0;
}