gdb是不是有BUG啊?还是我的问题?

时间:2021-02-04 16:40:56

#include <iostream>

class CTest
{
        public:
                CTest();
};

CTest::CTest(void)
{
        int x = 0;
        int y = 4;

        x = 23;
}

int main(int argc, char* argv[])
{
        CTest t;

        return 0;
}

当我用GDB跟到构造函数中时(不管断点打在哪里),p x命令和whatis x命令都显示No symbol "x" in current context.
我编译时是肯定加了调试信息的。另外ubuntu9.04上apt装的gdb没这个问题,vs6和vs2005也没这个问题,开始以为是
版本太低,下了个gdb7.2,问题依旧,求达人解答!

36 个解决方案

#1


需要run起来,而且需要在x的生命周期

#2


使用
b main
r
n
p t.x

#3


虚拟机装的ubuntu10.04.1(gdb7.1)也没有这种问题,公司的Fedora(gdb6.8)就有这种问题。
郁闷,期待高手!

#4


你没有 Run 起来吧?

#5


2楼的,多谢你的回复,不过x不是CTest的成员

#6


没run?
哈哈,都说了跟到构造函数中了,有条件的可以试试看有没有同样的问题

#7


编译命令是啥

#8


gcc -Wall -g filename.cpp

#9


引用 5 楼 youqika 的回复:
2楼的,多谢你的回复,不过x不是CTest的成员
那你的x在哪儿定义的?

#10


sorry,是g++
后来把-g变成-g3还是不行,不知道是不是因为双核CPU的原因?

#11


引用 9 楼 hqin6 的回复:
引用 5 楼 youqika 的回复:

2楼的,多谢你的回复,不过x不是CTest的成员
那你的x在哪儿定义的?

构造函数中,不允许吗?

#12


引用 9 楼 hqin6 的回复:
引用 5 楼 youqika 的回复:

2楼的,多谢你的回复,不过x不是CTest的成员
那你的x在哪儿定义的?
看错了。。。这是在构造函数里啊

(gdb) l
10 {
11 int x = 0;
12 int y = 4;
13
14 x = 23;
15 }
16
17 int main(int argc, char* argv[])
18 {
19 CTest t;
(gdb) b main
Breakpoint 1 at 0x80485a5: file t.cpp, line 19.
(gdb) r
Starting program: /home/zhixia/a.out 

Breakpoint 1, main (argc=1, argv=0xbffff474) at t.cpp:19
19 CTest t;
(gdb) s
CTest::CTest (this=0xbffff3c7) at t.cpp:11
11 int x = 0;
(gdb) n
12 int y = 4;
(gdb) n
14 x = 23;
(gdb) p x
$1 = 0
(gdb) 

#13


x的生命周期是从运行完int x=0;开始,到构造函数CTest()运行完毕释放掉占用内存结束,在其他时段x都是没有定义的。

#14


生命周期.~

#15


引用 13 楼 iecaslizongxing 的回复:
x的生命周期是从运行完int x=0;开始,到构造函数CTest()运行完毕释放掉占用内存结束,在其他时段x都是没有定义的。

谢谢回复,不过这种低级错误我还是不会犯的,呵呵~

貌似12楼的也没有问题啊,5555555,你的什么机器,真机还是虚拟机,虚拟机一般时模拟单核,真机就不好说了,
我的虚拟机也没有问题,55555,见鬼了。

#16


引用 15 楼 youqika 的回复:
引用 13 楼 iecaslizongxing 的回复:

x的生命周期是从运行完int x=0;开始,到构造函数CTest()运行完毕释放掉占用内存结束,在其他时段x都是没有定义的。

谢谢回复,不过这种低级错误我还是不会犯的,呵呵~

貌似12楼的也没有问题啊,5555555,你的什么机器,真机还是虚拟机,虚拟机一般时模拟单核,真机就不好说了,
我的虚拟机也没有问题,55555……
这个跟几核、是否虚拟机是没有关系的。。。

#17


GNU gdb Fedora (6.8-29.fc10)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) b main
Breakpoint 1 at 0x8048590: file m.cpp, line 19.
(gdb) r
Starting program: /root/E7/lj/c++/htd/a.out

Breakpoint 1, main () at m.cpp:19
19              CTest t;
Missing separate debuginfos, use: debuginfo-install glibc-2.9-2.i686 libgcc-4.3.2-7.i386 libstdc++-4.3.2-7.i386
(gdb) s
CTest (this=0xbffff363) at m.cpp:11
11              int x = 0;
(gdb) s
12              int y = 4;
(gdb) s
14              x = 13;
(gdb) p x
No symbol "x" in current context.
(gdb) whatis x
No symbol "x" in current context.

#18


在线等达人。。。。。。

#19


考虑是被优化掉了。。。。看lz是不是用了-O参数

#20


Missing separate debuginfos, use: debuginfo-install glibc-2.9-2.i686 libgcc-4.3.2-7.i386 libstdc++-4.3.2-7.i386

#21


root@SUNNY:~/E7/lj/c++/htd# g++ -Wall -g3 -O0 m.cpp
m.cpp: In constructor ‘CTest::CTest()’:
m.cpp:12: 警告:未使用的变量‘y’
root@SUNNY:~/E7/lj/c++/htd# gdb ./a.out
GNU gdb Fedora (6.8-29.fc10)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) b main
Breakpoint 1 at 0x8048590: file m.cpp, line 19.
(gdb) r
Starting program: /root/E7/lj/c++/htd/a.out

Breakpoint 1, main () at m.cpp:19
19              CTest t;
Missing separate debuginfos, use: debuginfo-install glibc-2.9-2.i686 libgcc-4.3.2-7.i386 libstdc++-4.3.2-7.i386
(gdb) s
CTest (this=0xbffff363) at m.cpp:11
11              int x = 0;
(gdb) s
12              int y = 4;
(gdb) s
14              x = 13;
(gdb) whatis x
No symbol "x" in current context.
(gdb) p x
No symbol "x" in current context.
(gdb)

完全不优化,这下明确了吧。

#22


20楼没看太懂,能解释一下吗?

#23


编译的时候,有没有把优化关了?
用-O0精致优化。第一个是字母O,第二个是数字0

#24


引用 21 楼 youqika 的回复:
C/C++ code
root@SUNNY:~/E7/lj/c++/htd# g++ -Wall -g3 -O0 m.cpp
m.cpp: In constructor ‘CTest::CTest()’:
m.cpp:12: 警告:未使用的变量‘y’
root@SUNNY:~/E7/lj/c++/htd# gdb ./a.out
GNU gdb Fedora (6.8-29.fc10)
Cop……
这不都告诉你了么?

Missing separate debuginfos, use: debuginfo-install glibc-2.9-2.i686 libgcc-4.3.2-7.i386 libstdc++-4.3.2-7.i386

#25


引用 24 楼 hqin6 的回复:
引用 21 楼 youqika 的回复:

C/C++ code
root@SUNNY:~/E7/lj/c++/htd# g++ -Wall -g3 -O0 m.cpp
m.cpp: In constructor ‘CTest::CTest()’:
m.cpp:12: 警告:未使用的变量‘y’
root@SUNNY:~/E7/lj/c++/htd# gdb ./a.out
GNU ……

分离的调试丢失,使用:debuginfo-install glibc-2.9-2.i686 libgcc-4.3.2-7.i386 libstdc++-4.3.2-7.i386
是指编译时加这几个库吗?

#26


gdb是很稳定的,bug也很少,从自己身上找原因吧

#27


才更新了下简历。居然接一天的面试电话。
C++有这么缺人吗?

#28


肯一不是gdb的问题,是你使用的问题,你单步调试一下,然后到了函数内部再查看变量值,另外,编译的时候要加调试信息;

#29


引用 25 楼 youqika 的回复:
引用 24 楼 hqin6 的回复:

引用 21 楼 youqika 的回复:

C/C++ code
root@SUNNY:~/E7/lj/c++/htd# g++ -Wall -g3 -O0 m.cpp
m.cpp: In constructor ‘CTest::CTest()’:
m.cpp:12: 警告:未使用的变量‘y’
root@SUNNY:~/E7/lj/c++/……
debuginfo-install krb5-libs试试。。。(提示说的是符号表丢失了)

#30


坐等zhao的回复。
按下xxx快捷键,查看每一句代码对应的汇编语句,不就行了?

#31


引用 3 楼 youqika 的回复:
虚拟机装的ubuntu10.04.1(gdb7.1)也没有这种问题,公司的Fedora(gdb6.8)就有这种问题。
郁闷,期待高手!


你不会在ubuntu 下编译的拿到fedora 下跑了吧?

#32


楼上所有的方法都试过了,不行,gdb没问题,丫的,fedora的问题。

#33


引用 19 楼 hqin6 的回复:
考虑是被优化掉了。。。。看lz是不是用了-O参数

支持,有些编译器是这样优化的,因为你的构造函数中局部变量只是进行了赋值操作,没有任何的逻辑和输出。这个可能和环境有关。
楼主可以试着改成这样

CTest::CTest(void)
{
        int x = 0;
        int y = 4;

        x = 23;
        printf("x=%d.\n", x); 
}


#34


引用 24 楼 hqin6 的回复:
引用 21 楼 youqika 的回复:

C/C++ code
root@SUNNY:~/E7/lj/c++/htd# g++ -Wall -g3 -O0 m.cpp
m.cpp: In constructor ‘CTest::CTest()’:
m.cpp:12: 警告:未使用的变量‘y’
root@SUNNY:~/E7/lj/c++/htd# gdb ./a.out
GNU g……

lz,gdb这样运行时正确的,当你运行到这里的时候构造函数已经运行完毕,所申请的的局部变量已经释放。我在下面的回复给出我的调试过程。

#35


huer@ubuntu:~$ c++ -g test.cpp
huer@ubuntu:~$ gdb ./a.out 
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/huer/a.out...done.
(gdb) l CTest::CTest() 
4 {
5         public:
6                 CTest();
7 };
8
9 CTest::CTest(void)
10 {
11         int x = 0;
12         int y = 4;
13
(gdb) b CTest::CTest() 
Breakpoint 1 at 0x804859a: file test.cpp, line 11. (2 locations)
(gdb) r
Starting program: /home/huer/a.out 

Breakpoint 1, CTest (this=0xbffff467) at test.cpp:11
11         int x = 0;
(gdb) print x
$1 = 134514272
(gdb) n
12         int y = 4;
(gdb) print x
$2 = 0
(gdb) x /d &x
0xbffff448: 0
(gdb) n
14         x = 23;
(gdb) print &x
$3 = (int *) 0xbffff448
(gdb) print x
$4 = 0
(gdb) n
15 }
(gdb) print x
No symbol "x" in current context.
(gdb) x &x
No symbol "x" in current context.
(gdb) 

#36


同时我做了一个对比试验。
huer@ubuntu:~$ c++ -g test.cpp
huer@ubuntu:~$ gdb ./a.out 
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/huer/a.out...done.
(gdb) l CTest::CTest() 
4 {
5         public:
6                 CTest();
7 };
8
9 CTest::CTest(void)
10 {
11         int x = 0;
12         int y = 4;
13
(gdb) l
14         x = 23;
15 y = 0;
16 }
17
18 int main(int argc, char* argv[])
19 {
20         CTest t;
21
22         return 0;
23 }
(gdb) b CTest::CTest() 
Breakpoint 1 at 0x804859a: file test.cpp, line 11. (2 locations)
(gdb) r
Starting program: /home/huer/a.out 

Breakpoint 1, CTest (this=0xbffff467) at test.cpp:11
11         int x = 0;
(gdb) print x
$1 = 134514272
(gdb) n
12         int y = 4;
(gdb) print x
$2 = 0
(gdb) n
14         x = 23;
(gdb) n
15 y = 0;
(gdb) print x
$3 = 23
(gdb) n
16 }
(gdb) print y
No symbol "y" in current context.
(gdb) 

#1


需要run起来,而且需要在x的生命周期

#2


使用
b main
r
n
p t.x

#3


虚拟机装的ubuntu10.04.1(gdb7.1)也没有这种问题,公司的Fedora(gdb6.8)就有这种问题。
郁闷,期待高手!

#4


你没有 Run 起来吧?

#5


2楼的,多谢你的回复,不过x不是CTest的成员

#6


没run?
哈哈,都说了跟到构造函数中了,有条件的可以试试看有没有同样的问题

#7


编译命令是啥

#8


gcc -Wall -g filename.cpp

#9


引用 5 楼 youqika 的回复:
2楼的,多谢你的回复,不过x不是CTest的成员
那你的x在哪儿定义的?

#10


sorry,是g++
后来把-g变成-g3还是不行,不知道是不是因为双核CPU的原因?

#11


引用 9 楼 hqin6 的回复:
引用 5 楼 youqika 的回复:

2楼的,多谢你的回复,不过x不是CTest的成员
那你的x在哪儿定义的?

构造函数中,不允许吗?

#12


引用 9 楼 hqin6 的回复:
引用 5 楼 youqika 的回复:

2楼的,多谢你的回复,不过x不是CTest的成员
那你的x在哪儿定义的?
看错了。。。这是在构造函数里啊

(gdb) l
10 {
11 int x = 0;
12 int y = 4;
13
14 x = 23;
15 }
16
17 int main(int argc, char* argv[])
18 {
19 CTest t;
(gdb) b main
Breakpoint 1 at 0x80485a5: file t.cpp, line 19.
(gdb) r
Starting program: /home/zhixia/a.out 

Breakpoint 1, main (argc=1, argv=0xbffff474) at t.cpp:19
19 CTest t;
(gdb) s
CTest::CTest (this=0xbffff3c7) at t.cpp:11
11 int x = 0;
(gdb) n
12 int y = 4;
(gdb) n
14 x = 23;
(gdb) p x
$1 = 0
(gdb) 

#13


x的生命周期是从运行完int x=0;开始,到构造函数CTest()运行完毕释放掉占用内存结束,在其他时段x都是没有定义的。

#14


生命周期.~

#15


引用 13 楼 iecaslizongxing 的回复:
x的生命周期是从运行完int x=0;开始,到构造函数CTest()运行完毕释放掉占用内存结束,在其他时段x都是没有定义的。

谢谢回复,不过这种低级错误我还是不会犯的,呵呵~

貌似12楼的也没有问题啊,5555555,你的什么机器,真机还是虚拟机,虚拟机一般时模拟单核,真机就不好说了,
我的虚拟机也没有问题,55555,见鬼了。

#16


引用 15 楼 youqika 的回复:
引用 13 楼 iecaslizongxing 的回复:

x的生命周期是从运行完int x=0;开始,到构造函数CTest()运行完毕释放掉占用内存结束,在其他时段x都是没有定义的。

谢谢回复,不过这种低级错误我还是不会犯的,呵呵~

貌似12楼的也没有问题啊,5555555,你的什么机器,真机还是虚拟机,虚拟机一般时模拟单核,真机就不好说了,
我的虚拟机也没有问题,55555……
这个跟几核、是否虚拟机是没有关系的。。。

#17


GNU gdb Fedora (6.8-29.fc10)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) b main
Breakpoint 1 at 0x8048590: file m.cpp, line 19.
(gdb) r
Starting program: /root/E7/lj/c++/htd/a.out

Breakpoint 1, main () at m.cpp:19
19              CTest t;
Missing separate debuginfos, use: debuginfo-install glibc-2.9-2.i686 libgcc-4.3.2-7.i386 libstdc++-4.3.2-7.i386
(gdb) s
CTest (this=0xbffff363) at m.cpp:11
11              int x = 0;
(gdb) s
12              int y = 4;
(gdb) s
14              x = 13;
(gdb) p x
No symbol "x" in current context.
(gdb) whatis x
No symbol "x" in current context.

#18


在线等达人。。。。。。

#19


考虑是被优化掉了。。。。看lz是不是用了-O参数

#20


Missing separate debuginfos, use: debuginfo-install glibc-2.9-2.i686 libgcc-4.3.2-7.i386 libstdc++-4.3.2-7.i386

#21


root@SUNNY:~/E7/lj/c++/htd# g++ -Wall -g3 -O0 m.cpp
m.cpp: In constructor ‘CTest::CTest()’:
m.cpp:12: 警告:未使用的变量‘y’
root@SUNNY:~/E7/lj/c++/htd# gdb ./a.out
GNU gdb Fedora (6.8-29.fc10)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) b main
Breakpoint 1 at 0x8048590: file m.cpp, line 19.
(gdb) r
Starting program: /root/E7/lj/c++/htd/a.out

Breakpoint 1, main () at m.cpp:19
19              CTest t;
Missing separate debuginfos, use: debuginfo-install glibc-2.9-2.i686 libgcc-4.3.2-7.i386 libstdc++-4.3.2-7.i386
(gdb) s
CTest (this=0xbffff363) at m.cpp:11
11              int x = 0;
(gdb) s
12              int y = 4;
(gdb) s
14              x = 13;
(gdb) whatis x
No symbol "x" in current context.
(gdb) p x
No symbol "x" in current context.
(gdb)

完全不优化,这下明确了吧。

#22


20楼没看太懂,能解释一下吗?

#23


编译的时候,有没有把优化关了?
用-O0精致优化。第一个是字母O,第二个是数字0

#24


引用 21 楼 youqika 的回复:
C/C++ code
root@SUNNY:~/E7/lj/c++/htd# g++ -Wall -g3 -O0 m.cpp
m.cpp: In constructor ‘CTest::CTest()’:
m.cpp:12: 警告:未使用的变量‘y’
root@SUNNY:~/E7/lj/c++/htd# gdb ./a.out
GNU gdb Fedora (6.8-29.fc10)
Cop……
这不都告诉你了么?

Missing separate debuginfos, use: debuginfo-install glibc-2.9-2.i686 libgcc-4.3.2-7.i386 libstdc++-4.3.2-7.i386

#25


引用 24 楼 hqin6 的回复:
引用 21 楼 youqika 的回复:

C/C++ code
root@SUNNY:~/E7/lj/c++/htd# g++ -Wall -g3 -O0 m.cpp
m.cpp: In constructor ‘CTest::CTest()’:
m.cpp:12: 警告:未使用的变量‘y’
root@SUNNY:~/E7/lj/c++/htd# gdb ./a.out
GNU ……

分离的调试丢失,使用:debuginfo-install glibc-2.9-2.i686 libgcc-4.3.2-7.i386 libstdc++-4.3.2-7.i386
是指编译时加这几个库吗?

#26


gdb是很稳定的,bug也很少,从自己身上找原因吧

#27


才更新了下简历。居然接一天的面试电话。
C++有这么缺人吗?

#28


肯一不是gdb的问题,是你使用的问题,你单步调试一下,然后到了函数内部再查看变量值,另外,编译的时候要加调试信息;

#29


引用 25 楼 youqika 的回复:
引用 24 楼 hqin6 的回复:

引用 21 楼 youqika 的回复:

C/C++ code
root@SUNNY:~/E7/lj/c++/htd# g++ -Wall -g3 -O0 m.cpp
m.cpp: In constructor ‘CTest::CTest()’:
m.cpp:12: 警告:未使用的变量‘y’
root@SUNNY:~/E7/lj/c++/……
debuginfo-install krb5-libs试试。。。(提示说的是符号表丢失了)

#30


坐等zhao的回复。
按下xxx快捷键,查看每一句代码对应的汇编语句,不就行了?

#31


引用 3 楼 youqika 的回复:
虚拟机装的ubuntu10.04.1(gdb7.1)也没有这种问题,公司的Fedora(gdb6.8)就有这种问题。
郁闷,期待高手!


你不会在ubuntu 下编译的拿到fedora 下跑了吧?

#32


楼上所有的方法都试过了,不行,gdb没问题,丫的,fedora的问题。

#33


引用 19 楼 hqin6 的回复:
考虑是被优化掉了。。。。看lz是不是用了-O参数

支持,有些编译器是这样优化的,因为你的构造函数中局部变量只是进行了赋值操作,没有任何的逻辑和输出。这个可能和环境有关。
楼主可以试着改成这样

CTest::CTest(void)
{
        int x = 0;
        int y = 4;

        x = 23;
        printf("x=%d.\n", x); 
}


#34


引用 24 楼 hqin6 的回复:
引用 21 楼 youqika 的回复:

C/C++ code
root@SUNNY:~/E7/lj/c++/htd# g++ -Wall -g3 -O0 m.cpp
m.cpp: In constructor ‘CTest::CTest()’:
m.cpp:12: 警告:未使用的变量‘y’
root@SUNNY:~/E7/lj/c++/htd# gdb ./a.out
GNU g……

lz,gdb这样运行时正确的,当你运行到这里的时候构造函数已经运行完毕,所申请的的局部变量已经释放。我在下面的回复给出我的调试过程。

#35


huer@ubuntu:~$ c++ -g test.cpp
huer@ubuntu:~$ gdb ./a.out 
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/huer/a.out...done.
(gdb) l CTest::CTest() 
4 {
5         public:
6                 CTest();
7 };
8
9 CTest::CTest(void)
10 {
11         int x = 0;
12         int y = 4;
13
(gdb) b CTest::CTest() 
Breakpoint 1 at 0x804859a: file test.cpp, line 11. (2 locations)
(gdb) r
Starting program: /home/huer/a.out 

Breakpoint 1, CTest (this=0xbffff467) at test.cpp:11
11         int x = 0;
(gdb) print x
$1 = 134514272
(gdb) n
12         int y = 4;
(gdb) print x
$2 = 0
(gdb) x /d &x
0xbffff448: 0
(gdb) n
14         x = 23;
(gdb) print &x
$3 = (int *) 0xbffff448
(gdb) print x
$4 = 0
(gdb) n
15 }
(gdb) print x
No symbol "x" in current context.
(gdb) x &x
No symbol "x" in current context.
(gdb) 

#36


同时我做了一个对比试验。
huer@ubuntu:~$ c++ -g test.cpp
huer@ubuntu:~$ gdb ./a.out 
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/huer/a.out...done.
(gdb) l CTest::CTest() 
4 {
5         public:
6                 CTest();
7 };
8
9 CTest::CTest(void)
10 {
11         int x = 0;
12         int y = 4;
13
(gdb) l
14         x = 23;
15 y = 0;
16 }
17
18 int main(int argc, char* argv[])
19 {
20         CTest t;
21
22         return 0;
23 }
(gdb) b CTest::CTest() 
Breakpoint 1 at 0x804859a: file test.cpp, line 11. (2 locations)
(gdb) r
Starting program: /home/huer/a.out 

Breakpoint 1, CTest (this=0xbffff467) at test.cpp:11
11         int x = 0;
(gdb) print x
$1 = 134514272
(gdb) n
12         int y = 4;
(gdb) print x
$2 = 0
(gdb) n
14         x = 23;
(gdb) n
15 y = 0;
(gdb) print x
$3 = 23
(gdb) n
16 }
(gdb) print y
No symbol "y" in current context.
(gdb)