到目前为止,我所使用的调试只是知道异常发生在哪一行,以及成员的值。我不明白看这样的物体有什么用:
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 15 64位IDE: Kdevelop4 (我认为它的调试器是GDB)
发布于 2013-09-22 09:11:17
您最初在objA中看到了垃圾值,因为它还没有初始化。一旦您将跨过这一行,它将更改为有效值。
A* objA = new A();对于您来说,新的有效值可能也是垃圾,但是请记住,objA是一个指向A的指针,所以类似垃圾的值实际上是一个有效的内存地址。
在调试时,我能看到成员的值和objA函数的返回值吗?
现在可以在“监视”窗口中展开objA,查看其成员的值,在本例中为name。请记住,在初始化name之前,您可能会看到objA的值,但同样,这将是一个垃圾值。
我不知道KDevelop是否支持观看函数。但是您可以在VisualC++中这样做。要查看函数的返回值,可以将函数调用添加到“监视”窗口,例如:
objA->getName()在监视窗口中查看函数时要小心,如果该函数修改了数据,它可能会产生副作用,使您感到困惑。
https://stackoverflow.com/questions/18941903
复制相似问题