为什么我的代码会崩溃
Why does my code crash?
这是一个相当普遍的问题。
如果你有一个有很多行代码的程序,比如说C++。在编译过程中,一切运行良好,没有警告,没有错误。但在执行程序的过程中,突然冻结,导致崩溃。
如果你几乎没有关于这可能发生的地方的信息(可能是循环,可能是指针,可能是错误的初始化,可能是…),如何解决这个问题?
是否有任何技术或评测器可以跟踪程序执行的当前行?
你的问题太宽泛,没有一般的答案。通常情况下,错误属于您(一开始不要怀疑编译器或实现是错误的,几乎总是您是错的,而不是系统!)。
首先,仔细阅读关于停止问题和无法解释的问题。
然后,对代码中的未定义行为(UB)要格外小心(并不是所有行为都会出现分段错误,请参阅此)。C++(&C)代码可以有很多这样的代码。有些语言(Haskell、Scheme、Common Lisp…)被更好地指定,UB更少。
具体来说,
-
在编译器中启用所有警告和调试信息,因此如果使用GCC(或类似的Clang/LLVM),请使用
g++ -Wall -Wextra -g
进行编译。有时您会很乐意使用一些消毒程序,例如使用一些-fsanitize=
标志进行编译。 -
学习如何使用调试器(例如
gdb
),以及valgrind -
了解更多关于C++的信息,因为它是一种困难的语言。
-
理解并遵循编码规则和指导方针(例如规则5)。
-
保持好奇心并学习许多其他语言和概念(因此请阅读SICP并学习Scheme)。
你需要十年的时间来学习编程,所以要有耐心。
PS。我有偏见的建议是在你的笔记本电脑上安装Linux。
相关文章:
- 为什么所有C++编译器都会崩溃或挂起此代码
- 使用 g++7 构建的代码在访问未对齐的内存时崩溃
- 您好,我实际上想了解以下代码.有人可以详细说明代码它到底在做什么吗?为什么它会在第 31 行崩溃
- 无法访问的代码如何导致我的程序崩溃?
- C++代码崩溃并具有无限循环
- 由于指针算法错误,代码在 memcpy 中崩溃
- 为什么在同一条件变量上使用多个互斥锁会使此代码崩溃?
- 运行简单的.oct文件时Octave崩溃,我的代码出了什么问题?
- 为什么代码会崩溃?(在CPP中)
- 赋值运算符在我制作类模板时使代码崩溃
- 为什么抓取窗口标题的代码会导致应用崩溃?
- 类似的代码.一个工作,一个崩溃.为什么?
- 为什么这段代码崩溃了
- 为什么此代码在此 Trie 实现中使用映射 c++ 中的指针崩溃?
- 为什么此代码会崩溃?(我是C 的新手)
- 程序过早结束,可能已经崩溃了.退出代码0xc0000005
- C++ - 代码在Visual Studio中完美运行,但命令行中的.exe不断崩溃
- 如何在导致应用程序崩溃的代码中修复指令
- 运行时,程序崩溃(代码块C++)
- 是我的编译器将适当的代码优化为无用的崩溃代码