This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Why running the next command will jump back to the previous line position


Hi, I'm using MinGW 4.6.2 and GDB cvs head under Windows XP.

When debugging a sample program: (I build it with -g, and no optimization option is used)

#include <string>
#include <map>

int main()
{
    std::map<int, std::string> m;
    m[0] = "000";
    m[1] = "111";
    for( int i = 0; i< 3; i++)
    {
        m[i] = "ssss";
    }
    return 0;
}


If I continuously run the command "next" under gdb, I found that when I hit the statement "return 0", if I run "next" again, It will take me backward to the line "std::map<int, std::string> m;". If I run the "next" again, the instruction will go forward the closing bracket of the main function body.

This was quite strange, it looks like the instruction will return to some previous position. (I guess that the destructor of the "std::map" was called.

My question is: This behavior is quite anti-friendly, because if I'm debugging a large function, I always get the instruction line back to where some local variable (automatic variable) was defined. 

Is it possible to solve it. I don't want the instruction line go backward when I leave some scope.

Thanks.

asmwarrior
ollydbg from codeblocks' forum


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]