调试 - 对象实例

Debugging - object instance

本文关键字:实例 对象 调试      更新时间:2023-10-16

到目前为止,我使用调试的目的只是知道异常发生在哪一行以及成员的值。我不明白观看这样的对象有什么用:

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)

您最初在objA中看到垃圾值,因为它尚未初始化。单步跳过此行后,它将更改为有效值。

A* objA = new A();

新的有效值对您来说也可能是垃圾,但请记住,objA是指向 A 的指针,因此类似垃圾的值实际上是一个有效的内存地址。

在调试时,我可以看到成员的值和返回的值吗 对象A的功能?

现在可以在"监视"窗口中展开objA以查看其成员的值,在这种情况下name。请记住,在初始化 objA 之前,您可能能够看到 name 的值,但同样,这将是一个垃圾值。

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

objA->getName()

"监视"窗口中监视函数时要小心,如果函数修改数据,则可能会产生副作用并使您感到困惑。