This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Why running the next command will jump back to the previous line position
- From: asmwarrior <asmwarrior at gmail dot com>
- To: gdb at sourceware dot org
- Date: Sat, 29 Oct 2011 15:11:25 +0800
- Subject: 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