This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
breaking at for-loop test line
- From: "Allen Hopkins" <allenh at eecs dot berkeley dot edu>
- To: gdb at sources dot redhat dot com
- Date: Wed, 28 Jul 2004 16:09:14 -0700
- Subject: breaking at for-loop test line
Is there a way to break at the test statement of a for-loop
on every iteration, the same way a while-loop works? Here's
what I mean:
1 #include <iostream.h>
2
3 int main(int argc, char* argv[])
4 {
5 int i = 0;
6
7 for (i = 0; i < 3; i++) {
8 cout << i << endl;
9 }
10
11 while (i < 6) {
12 cout << i++ << endl;
13 }
14
15 exit(0);
16 }
If I set a breakpoint at line 7, and another at line 11,
and "run" and "continue" until exit, it will only break once
on the for-loop, but it will break on each iteration of the
while-loop. How does this make sense? Is there any way to
get a breakpoint at the top of the for-loop to act like the
while-loop?
Here's the compile command:
g++ -ggdb -Wno-deprecated -o s s.cpp
There's no optimization going on that I'm not aware of,
is there?
Here's sample gdb output:
(gdb) break 7
Breakpoint 1 at 0x10b04: file s.cpp, line 7.
(gdb) break 11
Breakpoint 2 at 0x10b5c: file s.cpp, line 11.
(gdb) run
Starting program:
/export/home/allenh/projects/metropolis/testing/foodir/s
Breakpoint 1, main (argc=1, argv=0xffbeecac) at s.cpp:7
7 for (i = 0; i < 3; i++) {
(gdb) c
Continuing.
0
1
2
Breakpoint 2, main (argc=1, argv=0xffbeecac) at s.cpp:11
11 while (i < 6) {
(gdb) c
Continuing.
3
Breakpoint 2, main (argc=1, argv=0xffbeecac) at s.cpp:11
11 while (i < 6) {
(gdb) c
Continuing.
4
Breakpoint 2, main (argc=1, argv=0xffbeecac) at s.cpp:11
11 while (i < 6) {
(gdb) c
Continuing.
5
Breakpoint 2, main (argc=1, argv=0xffbeecac) at s.cpp:11
11 while (i < 6) {
(gdb) c
Continuing.
Program exited normally.
(gdb)
Any advice appreciated.
Oh, yeah...
Sun Solaris 2.8
gcc 3.2.2
gdb 6.0
Thanks.
-Allen Hopkins
UC Berkeley