调试在不同位置崩溃10次的程序

hid*_*boy 6 c debugging

您将获得在运行时崩溃的应用程序的源代码.在调试器中运行10次后,您发现它永远不会在同一个地方崩溃.该应用程序是单线程的,仅使用C标准库.哪些编程错误可能导致此崩溃?你会如何测试每一个?

dre*_*lax 15

您的代码可以调用C标准中具有未定义行为的任​​何内容,包括(但不限于):

  1. 不初始化变量但尝试使用其值.
  2. 取消引用空指针.
  3. 读取或写入数组的末尾.
  4. 定义以下划线和大写字母或另一个下划线开头的预处理器宏.

列表很长,但C规范中的附件J.2提供了未定义行为的简明列表.


sjn*_*ngm 9

  • 磁盘已满,即其他进程可能会删除不同的文件,从而导致更多空间可用
  • 代码取决于计时器
  • 内存问题,即其他进程分配和/或释放内存
  • 指针指向内存中的随机位置,该位置由另一个进程更改,导致某些值"有效"(尽管非常罕见)

通常,可能存在其他过程的情况.请注意,您说只有您的程序是单线程的,其他程序可以并行运行.