首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试-对象实例

调试-对象实例
EN

Stack Overflow用户
提问于 2013-09-22 08:36:49
回答 1查看 1.5K关注 0票数 0

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

代码语言:javascript
复制
Name Variable
objA 0x10cf990

即使在光标到达行之前,objA也包含一个垃圾值。如果你看不懂这个值又有什么意义呢?有什么方法可以查看对象的数据吗?

例如,

代码语言:javascript
复制
class A{
  name = "im a";

  String getName(){
     return name;
  }
}

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

在调试时,我能看到成员的值和objA函数的返回值吗?

喜欢

代码语言:javascript
复制
Name Variable
objA 0x10cf990
--name im a
--getName() im a

我想我以前试过这样的东西。我不很清楚。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-22 09:11:17

您最初在objA中看到了垃圾值,因为它还没有初始化。一旦您将跨过这一行,它将更改为有效值。

代码语言:javascript
复制
A* objA = new A();

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

在调试时,我能看到成员的值和objA函数的返回值吗?

现在可以在“监视”窗口中展开objA,查看其成员的值,在本例中为name。请记住,在初始化name之前,您可能会看到objA的值,但同样,这将是一个垃圾值。

我不知道KDevelop是否支持观看函数。但是您可以在VisualC++中这样做。要查看函数的返回值,可以将函数调用添加到“监视”窗口,例如:

代码语言:javascript
复制
objA->getName()

在监视窗口中查看函数时要小心,如果该函数修改了数据,它可能会产生副作用,使您感到困惑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18941903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档