我意识到调试器会有所帮助,但我现在对使用它的知识有点缺乏。但我保证我会尽快开始学习!所以,如果有人也知道如何通过提示学习如何学习使用gdb。我很欣赏它!感谢。
答案 0 :(得分:3)
如果你正在使用GCC,我衷心建议使用GDB。
我喜欢Eclipse ...但我通常会发现命令行更快更有用。 IMHO ...
无论如何:
1)使用“-g”编译以允许调试,
2)在gdb中运行你的程序,
3)注意<#p>上崩溃的行#
4)向后看 ,看看是否有关于你没有分配的那一行的内容,你已经解除分配,或者很可能是你用一个糟糕的数组访问覆盖。
以下是一些关于GDB的优秀简短教程:
'希望有所帮助!
PS:
当你开始调试时,我建议你在“Nodes”构造函数和ManipulateArray构造函数中设置断点。
如果你没有点击断点...那么一个对象永远不会被创建......你可能找到了你的bug:)
答案 1 :(得分:2)
在Node
课程中,您有一组四个Node
指针,名为attachedNode
。你的代码中没有任何时候你会指出这些指针。但是你在attachNewNode
方法中取消引用这些指针。那是一个段错误。
我不知道如何建议你解决这个问题(或者你可能遇到的任何其他问题,我认为有一些问题)因为我不太清楚代码应该做什么。
然而,有一条建议。这段代码太大而且复杂。首先获得一小部分工作,然后逐步构建整个程序。缓慢而稳定的方法最终会让你更快。答案 2 :(得分:0)
快速浏览一下 void Node :: attachNewNode(Node * newNode,int direction){* newNode = * attachedNode [direction];} 看起来有点不对劲。赋值应该是attachNode [direction] = newNode; 您想要在某个方向上附加新节点。