C++ und GDB



  • Ich arbeite unter Windows, und verwende djgpp als Compiler. Ich habe folgenden C++-Code geschrieben.

    // test.cpp
    #include <iostream>
    
    using namespace std;
    
    int main(void)
    {
        int x;
    
        x=0;
        x=5;
        cout<<x<<endl;
        return(0);
    }
    

    Der Code wurde mit

    gxx test.cpp -g -o test.exe
    

    kompiliert.
    Beim Debuggen mit dem GNU Debugger habe ich Probleme:

    gdb test.exe
    GNU gdb 5.1.1
    Copyright 2002 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 "i386-pc-msdosdjgpp"...
    (gdb) break main
    Breakpoint 1 at 0x15e9: file test.cpp, line 1048.
    (gdb) run
    Starting program: test.exe
    
    Breakpoint 1, main () at test.cpp:1048
    Line number 1048 out of range; test.cpp has 14 lines.
    Current language:  auto; currently c++
    (gdb) step
    Line number 1049 out of range; test.cpp has 14 lines.
    (gdb) step
    Line number 1050 out of range; test.cpp has 14 lines.
    (gdb) step
    5
    Line number 1051 out of range; test.cpp has 14 lines.
    (gdb) step
    Line number 1052 out of range; test.cpp has 14 lines.
    (gdb) step
    0x000051b8 in __crt1_startup ()
    (gdb) step
    Single stepping until exit from function __crt1_startup,
    which has no line number information.
    
    Program exited normally.
    (gdb) quit
    

    Warum werden die Zeilen nicht richtig angezeigt? Bei C-Code tritt dieses Problem nicht auf.

    lg, phreaking

    [ Dieser Beitrag wurde am 30.06.2002 um 23:57 Uhr von phreaking editiert. ]



  • Hat denn noch nie jemand hier mit dem GDB kombiniert mit C++ gearbeitet?

    thx, phreaking



  • Ich arbeite ständig mit C++ und GDB - aber unter Linux :-).

    Ich hab bis jetzt nur C programme mit DJGPP geschrieben. Er verwendet ja nicht native libs sondern libc ports inwiefern es da bei C++ probleme giebt weiss ich nicht. Allerding hab ich ihn noch nie als empfehlung für en C++ programm gehört.

    Versuch das gleiche mal mit MinGW (www.mingw.org), ist prinzipiell das selbe wie DJGPP nur dass der native Win32 libs verwendet. GDB ist dort auch dabei.



  • Danke für die Antwort. Leider bin ich in Sachen Linux usw. nicht so bewandert...
    Welche Files muss ich denn von MingW herunterladen? Kennt jemand zu MingW gute Tutorials zu MingW?
    Und was sind Native Libs, bzw. libc Ports?

    thx, phreaking



  • Hat denn hier keiner Erfahrung mit Mingw?

    lg, phreaking



  • Lars_Skiba benutzt glaub ich den Mingw, nur guckt der wohl nicht in das Forum hier...



  • schau doch einfach mal auf die MinGW Homepage oder mit Google, da findest du bestimmt genug Informationen!



  • Danke euch allen, ich kenne mich jetzt mit MingW aus, und damit ist das Problem auch wirklich gelöst 😉

    lg, phreaking



  • also jetzt habe ich ein Problem mit C++ und dem GDB 😞

    Wenn ich mit dem GDB ein Programm debuggen will, dann debugge ich die komplette libstdc++ mit 😕 das will ich aber nicht! (ist nämlich sehr umständlich sich erst durch 1000 std Lib Funktionen zu finishen bis man beim Original Quelltext ist).

    Was mache ich falsch?



  • Hmm... gehst du das Programm mit step (s) durch? Hast du es schon mit next (n) ausprobiert? Oder habe ich die Frage falsch verstanden?

    lg, phreaking



  • das Problem ist, wenn ich durch das Programm gehe, dann geht der auch durch die Funktionen der libstdc++, dass ist schlecht, weil das Programm unübersichtlich wird, ich unmengen an Code zu debuggen habe und mich nicht auf die wichtigen Sachen konzentrieren kann.

    Ich weiss nicht wie ich das abstellen kann (kann man wahrscheinlich auch nicht 😞 )


Anmelden zum Antworten