这是一个相当普遍的问题。
如果你有一个包含许多代码行的程序,那么就说C ++。 Durring编译一切正常,没有警告没有错误。但在执行程序时,突然冻结,导致崩溃。
如何解决这个问题,如果你几乎没有信息可以发生这种情况(可能是循环,可能是指针,可能是错误的初始化,可能是......)。
是否存在跟踪程序执行当前行的任何技术或分析器?
答案 0 :(得分:1)
你的问题太宽泛了,没有一般的答案。一般来说,错误是你的(首先不要怀疑编译器或实现是错误的,几乎总是你是错误的,而不是系统!)
首先,请仔细阅读Halting Problem和Undecidable Problem。
然后,在代码中对undefined behavior(UB)非常谨慎(并非所有代码都提供segmentation faults,请参阅this)。 C ++(& C)代码可以有很多代码。一些语言(Haskell,Scheme,Common Lisp ....)更好地指定并且具有更少的UB。
具体地,
启用编译器中的所有警告和调试信息,因此如果使用GCC(或同样使用Clang/LLVM),请使用g++ -Wall -Wextra -g
进行编译。有时你会很乐意使用一些消毒杀菌剂,例如用some -fsanitize=
标志编译。
了解更多关于C ++的信息,因为它是一种难以理解的语言。
了解并遵守编码规则和指南(例如rule of 5)。
好奇并学习许多其他语言和概念(请阅读SICP并学习计划)。
您需要ten years来学习编程,所以请耐心等待。
PS。我有偏见的建议是在你的笔记本电脑上安装Linux。