2013-09-22 101 views
0

到目前为止,我使用的所有调试都是为了了解发生异常的哪一行以及哪些成员值。我不明白有什么用看像这样的对象:将光标到达线调试 - 对象实例

Name Variable 
objA 0x10cf990 

甚至在此之前,objA含有垃圾值。如果你看不懂价值,那有什么意义?有没有办法查看对象的数据?

例如,

class A{ 
    name = "im a"; 

    String getName(){ 
    return name; 
    } 
} 

main(){ 
    A* objA = new A(); //breakpoint here 
} 

在调试,我可以看到的objA的功能的部件和返回值的值?

Name Variable 
objA 0x10cf990 
--name im a 
--getName() im a 

我想我曾经使用过这样的事情。我不确定。

系统:Linux Mint的15 64 IDE:Kdevelop4(我认为它的调试器是GDB)

+2

您正在使用哪种调试器(IDE)?不知道这一点很难给你建议! –

+0

你的第一个问题是修辞吗? – Beta

+0

我在Linux Mint 15中使用Kdevelop4。我认为它的默认调试器是gdb。 – tambalolo

回答

0

您最初看到在objA垃圾值,因为它尚未初始化。一旦你步超过这一行,它会改变为有效值。

A* objA = new A(); 

新的有效的值可能看起来垃圾你,但请记住,objA是一个指向,使垃圾般的价值实际上是一个有效的内存地址。

关于调试,我可以看到objA函数的成员值和返回值 ?

您现在可以扩大在监视窗口objA,看到它的成员,这是在这种情况下name的值。请记住,在objA初始化之前,您可能会看到name的值,但同样,这也是垃圾值。

我不知道KDevelop是否支持观看功能。但是你可以在Visual C++中做到这一点。要观看的函数的返回值,你的函数调用添加到监视窗口,例如:

objA->getName() 

在监视窗口中观看的功能时,请注意,如果函数修改数据时,它可能会产生副作用和迷惑你。

+0

我知道这是一个内存地址,我只是困惑,因为我不知道如何完全使用Kdevelop的调试器,但我不知道Kdevelop是否支持观察对象的成员或函数。我会在稍后检查。谢谢。 – tambalolo