| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: C++ Debuggen im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hi, ich finde irgendwie nichts ( also die Frage schon, nur keine richtige Antwort ) wie ich ein C++ ...
![]() |
| | #1 (permalink) |
| Registriert seit: 19.08.04 ![]() Likes: 1 | Anzeige Hi, ich finde irgendwie nichts ( also die Frage schon, nur keine richtige Antwort ) wie ich ein C++ Programm mit dem GDB debuggen kann. Code: class Test
{
private:
void print(void)
{
printf("Hallo\n");
}
};
int main(void)
{
Test p;
return 0;
} |
| | |
| | #2 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Einfach einen Breakpoint auf deine print-Funktion setzen.
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter Registriert seit: 19.08.04 ![]() Likes: 1 | Okay, wenn ich nun ein "break 4" mache, was habe ich davon ? Ich will ja davon den wie in einem C Programm mit disas den Code anschauen ? |
| | |
| | #4 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Warum kompilierst du nicht einfach mit 'g++ -S'? Dann bekommst du deinen Assembler-Code.
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| | #5 (permalink) | ||||
| Themenstarter Registriert seit: 19.08.04 ![]() Likes: 1 | Kannst du mir nicht auf meine Frage antworten oder willst du mir nicht auf meine Frage antworten. Ich möchte gerne wissen : Zitat:
Zitat:
Zitat:
Mich interessiert nicht nur der ASM Code sondern die gesamte Ausgabe vom GDB Code: class Test
{
private:
void print(void)
{
printf("print()\n");
}
};
void xprint(void)
{
printf("xprint()\n");
}
int main(void)
{
return 0;
} Zitat:
| ||||
| | |
| | #6 (permalink) |
| Registriert seit: 17.04.06 ![]() Likes: 3 | Hast du kein Visual Studio?
__________________ http://chm0815.blogspot.com |
| | |
| | #7 (permalink) | |
| Themenstarter Registriert seit: 19.08.04 ![]() Likes: 1 | Zitat:
Aber wie würde ich es unter Visual Studio machen ? | |
| | |
| | #8 (permalink) | ||
| Registriert seit: 17.04.06 ![]() Likes: 3 | Zitat:
__________________ http://chm0815.blogspot.com | ||
| | |
| | #9 (permalink) |
| Registriert seit: 16.12.06 ![]() Likes: 0 | Wie jetzt ... möchtest due wissen WIE die Funktion printf() aufgebaut ist in dem du debuggst ?? .... C++ Builder ..( und auch bei anderen ) einfach ein Breakpint setzen wie schon 3 mal gesagt wurde... und dann F7 drücken um in die funktion zu gehen. Ansonsten wenn das nicht die richtige antwort ist musst du deine frage neu formulieren. weil ich hab deine frage am anfang gar nicht verstanden. hadebakalem ciaaao |
| | |
| | #10 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Hmm, stimmt, da die Funktion private ist und nirgendwo aufgerufen wird (z.B. im Klassen-Konstruktor, bringt ein Breakpoint wenig und gdb kennt diese Funktion auch nicht. Hatte ich nicht drauf geachtet. In diesem Fall ist die Antwort auf deine Frage... Du kannst diese Funktion nicht debuggen. Um sie debuggen zu können muss sie public sein und im Programmfluss aufrufbar. Der Code muss also so ausshen, damit du die Funktion disassemblieren kannst: Code: #include <iostream>
class Test
{
public:
void print(void)
{
printf("Hallo\n");
}
};
int main(void)
{
Test p;
p.print();
return 0;
} Code: bitmuncher@admin-laptop:~$ g++ -o test -ggdb test.cpp bitmuncher@admin-laptop:~$ gdb ./test GNU gdb 6.6-debian Copyright (C) 2006 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i486-linux-gnu"... Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1". (gdb) disas Test::print Dump of assembler code for function _ZN4Test5printEv: 0x080485f0 <_ZN4Test5printEv+0>: push %ebp 0x080485f1 <_ZN4Test5printEv+1>: mov %esp,%ebp 0x080485f3 <_ZN4Test5printEv+3>: sub $0x8,%esp 0x080485f6 <_ZN4Test5printEv+6>: movl $0x80486cc,(%esp) 0x080485fd <_ZN4Test5printEv+13>: call 0x80484a8 <puts@plt> 0x08048602 <_ZN4Test5printEv+18>: leave 0x08048603 <_ZN4Test5printEv+19>: ret End of assembler dump. (gdb) Code: (gdb) break Test::print
Breakpoint 1 at 0x80485f6: file test.cpp, line 8.
(gdb) run
Starting program: /home/bitmuncher/test
Breakpoint 1, Test::print (this=0xbfdb43f3) at test.cpp:8
8 printf("Hallo\n");
(gdb) disas
Dump of assembler code for function _ZN4Test5printEv:
0x080485f0 <_ZN4Test5printEv+0>: push %ebp
0x080485f1 <_ZN4Test5printEv+1>: mov %esp,%ebp
0x080485f3 <_ZN4Test5printEv+3>: sub $0x8,%esp
0x080485f6 <_ZN4Test5printEv+6>: movl $0x80486cc,(%esp)
0x080485fd <_ZN4Test5printEv+13>: call 0x80484a8 <puts@plt>
0x08048602 <_ZN4Test5printEv+18>: leave
0x08048603 <_ZN4Test5printEv+19>: ret
End of assembler dump.
(gdb)
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Programmabsturz debuggen? | metax. | Linux/UNIX | 2 | 16.07.08 20:31 |
| Altes Dosprogramm debuggen. | Clickme | Hacks & Crackmes | 3 | 08.04.07 18:01 |
| Problem beim Debuggen C++ Programmen | C/C++ | Code Kitchen | 7 | 16.11.06 16:53 |
| Mechwarrior3 schmiert ab -> debuggen? | noobhacker | Games | 6 | 31.07.06 14:24 |
| GDB - Assemblercode debuggen [gelöst] | v01d | Linux/UNIX | 0 | 21.07.06 09:01 |