我意识到调试器会有所帮助,但我目前有点缺乏使用它的知识。但我保证我会尽快开始学习它!因此,如果有人也知道一些关于我如何通过提示学习使用 gdb 的好书。非常感谢!谢谢。
3 回答
如果你使用 GCC,我衷心推荐使用 GDB。
我喜欢 Eclipse……但我通常发现命令行更快、更有用。恕我直言...
反正:
1)使用“-g”编译以允许调试,
2)在gdb中运行你的程序,
3)注意行#它崩溃了
4)向后看,看看你没有分配的那条线,你已经释放了,或者很可能,你用错误的数组访问覆盖了。
以下是一些关于 GDB 的简短教程:
'希望有帮助!
PS:
当您开始调试时,我建议您在“Nodes”构造函数和 ManipulateArray 构造函数中设置断点。
如果你没有打断点......那么一个对象永远不会被创建......你可能会发现你的错误:)
哇,这是一大堆代码。我不知道它的用途,但我可以看到一个问题
在您的Node
类中,您有一个由四个指针组成的数组,Node
称为attachedNode
. 在您的代码中,您绝不会将这些指针指向任何东西。但是您在attachNewNode
方法中取消引用这些指针。那是一个段错误。
我不知道如何建议您解决该问题(或您可能遇到的任何其他问题,我认为有一些),因为我不太清楚代码应该做什么。
然而,一条建议。这段代码太大太复杂。先让一小部分工作,然后逐渐建立整个程序。缓慢而稳定的方法最终会让你更快地到达那里。
快速查看 void Node::attachNewNode(Node *newNode, int direction) {*newNode = *attachedNode[direction];} 看起来有问题。赋值应该是 attachNode[direction] = newNode; 您想在某个方向附加新节点。