for schleife



  • hallo
    ich habe folgende Schleife

    for(int=0;i<1000;++i)
    {
       ...code
    }
    

    wie kann ich beim Debuggen direkt in der Schleifedurchlauf z.B. i=300 springen?
    weil ab diesen Bereich läuft irgendwas schief und will ich das überprufen(debbuggen)
    danke



  • int i = 300;
    for(;i<1000;++i)
    {
       ...code
    }
    


  • break filename:line if i == 300



  • jo entweder if abfrage oder geduldig F10 drücken. denk dran, du wirst hoffentlich pro std bezahlt



  • Ponto schrieb:

    break filename:line if i == 300
    

    kannst du es ein bisschen erklären. vielleicht mit einem Beispiel
    Danke



  • for(int=0;i<1000;++i)
    {
        if(i == 300)
        {
            int egal = 42; // breakpoint hier
        }
        // code...
    }
    

    Je nach verwendetem Debugger kannst du möglicherweise auch direkt einen bedingten Breakpoint setzen.



  • rtio schrieb:

    Ponto schrieb:

    break filename:line if i == 300
    

    kannst du es ein bisschen erklären. vielleicht mit einem Beispiel
    Danke

    Nehmen wir folgendes Programm:

    #include <iostream>
    
    int main()
    {
       int summe = 0;
       for (int i = 0; i != 1000; ++i)
       {
          summe += i;
       }
    }
    

    Wir speichern es in schleife.C. Zeile 8 ist die Zeile mit dem std::cout. Es ergibt sich folgende Debugsesseion:

    ponto@certa:~> g++ -g schleife.C
    ponto@certa:~> gdb ./a.out
    GNU gdb 5.2.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 "i586-suse-linux"...
    (gdb) break schleife.C:8 if i == 300
    Breakpoint 1 at 0x8048777: file schleife.C, line 8.
    (gdb) run
    Starting program: /lfs/user/bartosch/a.out
    
    Breakpoint 1, main () at schleife.C:8
    8             summe += i;
    (gdb) p i
    $1 = 300
    (gdb) p summe
    $2 = 44850
    (gdb)
    


  • hallo Ponto
    das ist komplizierter für mich
    ich arbeite unter windows mit VC++


  • Mod

    mit vc++ geht es noch einfacher. einfach breakpoint wie gewohnt setzten, dann dessen eigenschaften ändern (z.b. durch rechts-klick auf den roten punkt - breakpoint properties/condition...)


Log in to reply