0

我意识到调试器会有所帮助,但我目前有点缺乏使用它的知识。但我保证我会尽快开始学习它!因此,如果有人也知道一些关于我如何通过提示学习使用 gdb 的好书。非常感谢!谢谢。

4

3 回答 3

3

如果你使用 GCC,我衷心推荐使用 GDB。

我喜欢 Eclipse……但我通常发现命令行更快、更有用。恕我直言...

反正:

1)使用“-g”编译以允许调试,

2)在gdb中运行你的程序,

3)注意行#它崩溃了

4)向后看,看看你没有分配的那条线,你已经释放了,或者很可能,你用错误的数组访问覆盖了。

以下是一些关于 GDB 的简短教程:

'希望有帮助!

PS:

当您开始调试时,我建议您在“Nodes”构造函数和 ManipulateArray 构造函数中设置断点。

如果你没有打断点......那么一个对象永远不会被创建......你可能会发现你的错误:)

于 2012-11-10T22:00:00.037 回答
2

哇,这是一大堆代码。我不知道它的用途,但我可以看到一个问题

在您的Node类中,您有一个由四个指针组成的数组,Node称为attachedNode. 在您的代码中,您绝不会将这些指针指向任何东西。但是您在attachNewNode方法中取消引用这些指针。那是一个段错误。

我不知道如何建议您解决该问题(或您可能遇到的任何其他问题,我认为有一些),因为我不太清楚代码应该做什么。

然而,一条建议。这段代码太大太复杂。先让一小部分工作,然后逐渐建立整个程序。缓慢而稳定的方法最终会让你更快地到达那里。

于 2012-11-10T22:01:40.640 回答
0

快速查看 void Node::attachNewNode(Node *newNode, int direction) {*newNode = *attachedNode[direction];} 看起来有问题。赋值应该是 attachNode[direction] = newNode; 您想在某个方向附加新节点。

于 2012-11-10T22:46:32.337 回答