面试:如果程序崩溃,可能的原因是什么?

2023-05-16

You are given the source to an application which crashes when it is run. After running
it ten times in a debugger, you find it never crashes in the same place. The application
is single threaded, and uses only the C standard library. What programming errors
could be causing this crash? How would you test each one?

大意:你得到一个应用的源码,该应用每次启动都会出现程序崩溃。再你调试了10次后发现,在一个相同的条件下,该程序从不崩溃。

该程序是单线程,并且使用的库函数是c的标准库。那么,该程序崩溃的原因是什么?你怎样检测它呢?

The question largely depends on the type of application being diagnosed. However, we can

give some general causes of random crashes.
1. Random variable: The application uses some random number or variable component
   which may not be fixed for every execution of the program. Examples include: user
  input, a random number generated by the program, or the time of day.
2. Memory Leak: The program may have run out of memory. Other culprits are totally
   random for each run since it depends on the number of processes running at that
  particular time. This also includes heap overflow or corruption of data on the stack.
It is also possible that the program depends on another application / external module that
could lead to the crash. If our application, for example, depends on some system attributes
and they are modified by another program, then this interference may lead to a crash. Pro-
grams which interact with hardware are more prone to these errors.
In an interview, we should ask about which kind of application is being run. This information
may give you some idea about the kind of error the interviewer is looking for. For example,
a web server is more prone to memory leakage, whereas a program that runs close to the

system level is more prone to crashes due to system dependencies.

答案:该问题很大程度上取决于对该应用的诊断。但我们可以总结一下一些随机常见的崩溃原因:

1. 不确定的变量:程序使用了随机的数字或变量组件,在程序执行时没有被很好的确定范围。如:用户输入,随机数,或时间。

2.内存泄漏:程序每次执行时都内存溢出。每次运行程序崩溃的罪魁祸首是随机的,因为它依赖于在特定时间运行的进程数。

包括堆溢出或者是栈异常。

程序依赖于其它外部应用也可能导致崩溃。如果我们的应用依赖于一个系统某些系统属性,他们被另一个程序修改,那么这个干扰可能会导致系统崩溃。与硬件交互的程序更容易出现这些错误。例如,一个Web服务器是更容易出现内存泄漏,而接近系统级运行的程序更容易崩溃,由于系统的依赖。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试:如果程序崩溃,可能的原因是什么? 的相关文章

  • 2021-06-07 SONiC 系统基于优先级的流控PFC配置命令

    2021 06 07 SONiC 系统管理 42 SONiC 系统基于优先级的流控PFC配置命令 IEEE 802 1Qbb定义的基于优先级的流控Asymmetric Priority Flow Control功能可以在端口上为每个不同的优
  • 2021-06-25 SONiC 系统BGP配置命令

    2021 06 25 SONiC 系统BGP配置命令 SONiC系统BGP配置 SONiC系统所默认包含的BGP模块在201811版的SONiC之前是开源的Quagga软件 xff0c 之后改成了更流行的FRR FRR中的Show命令是以
  • 2021年8月14日 七夕节的相遇 SONiC+P4实现

    2021年8月14日 七夕节的相遇 SONiC 43 P4实现 ONF启动了PINS项目 xff0c P4 integrated network stack
  • 2021-08-20 SONiC中的FRR和Zebra

    2021 08 20 SONiC中的FRR和Zebra SONiC中采用FRR和Zebra处理路由协议 以前写过SONiC系统所默认包含的BGP模块在201811版的SONiC之前是开源的Quagga软件 xff0c 之后改成了更流行的FR
  • 2021-08-29 SONiC中基于策略的哈希配置

    SONiC中基于策略的哈希配置 SONiC可以支持对不同类型的报文采取不同的Hash算法 对于多通道 多链路连接的情况 xff0c 如LAG和ECMP的接口上 xff0c 交换机和路由器采用Hash算法对报文中指定的字段进行Hash计算 x
  • 2021-09-19 当SONiC遇到P4之二

    当SONiC遇到P4之二 P4描述SAI 在当SONiC遇到P4中介绍了用P4来实现SAI Model的方式 xff0c 这种方式利用了P4数据平面编程的功能实现了SAI模型 xff0c 将P4和SONiC这两个分别位于网络数据平面和控制平
  • Cmake 模板和语法

    开始一直犹豫是不是要学cmake对于一个没有项目驱动的人来数 xff0c 感觉用不用都可以 我大可用一个简单的Makefile模板来做一些简单的工程阿 或者我还可以用autotools等 不过既然已经看了一个晚上了 xff0c 还是把它弄懂
  • 2021-09-25 SONiC系统管理32 IFA

    SONiC系统管理32 IFA Inband flow analyzer SONiC系统支持Telemetry的功能 xff0c 在INT中介绍了带内遥测In band Network Telemetry INT 对于遥测的结果 xff0c
  • 自动驾驶网络

    自动驾驶网络 网络为啥要自动驾驶 网络为啥要自动驾驶 自动驾驶网络首先要解决网络测量的问题 有测量才能完成闭环的控制
  • 怎样为SONiC社区做贡献

    64 TOC 2023继续前行 怎样为SONiC社区做贡献 SONiC在社区参与者的贡献下不断成长 xff0c 已经取得了网络操作系统事实上一统江湖的地位 同时SONiC也在不断扩大应用范围 xff0c 国内知名大厂最近在SONiC社区申请
  • cnblog上写了几个PR的内容解读

    cnblog上写了几个PR的内容解读 xff0c 欢迎参观 SONiC系统利用YANG来描述配置文件的格式 基于Radius的认证方式把登录用户的安全认证放在一个集中的Radius服务器上 xff0c 被登录设备在需要进行登录用户认证的时候
  • 无人机基础知识

    刚玩无人机或者想玩无人机的朋友 xff0c 想和圈内人交流交流get新技能 xff0c 却总有点张不开口 xff0c 怕问题一说出来就被鄙视得体无完肤 xff0c 没法继续交流了 不过 xff0c 不了解一些基本常识 xff0c 不记住几个
  • tensorflow解决keras报错 “AlreadyExistsError: Another metric with the same name already exists.“

    tensorflow解决keras报错 34 AlreadyExistsError Another metric with the same name already exists 34 最近要用到keras的一些API xff0c 用co
  • 一、Docker安装及初始化配置(Linux版)

    Docker安装及初始化配置 xff08 Linux版 xff09 1 安装前准备2 docker安装3 docker配置 1 安装前准备 1 切换root用户 xff1a sudo su 2 配置网络源 xff1a vi etc apt
  • 三、Docker常用命令和部署实例(Linux和Windows通用)

    Docker常用命令和部署实例 xff08 Linux和Windows通用 xff09 一 Docker组件和常用命令二 Docker服务命令三 Docker镜像命令四 Docker容器命令五 Docker实例练习1 MySQL容器部署2
  • 四、Dockerfile应用案例教程(将一个或多个jar包部署到docker容器中运行)

    Dockerfile应用案例教程 1 现有环境2 部署方式方式一 xff1a 直接部署jar包为容器 xff08 单个jar包 xff09 方式二 xff1a 以启动jar包打包镜像 xff0c 部署容器 xff08 单个和多个jar包均可
  • Ubuntu虚拟机设置网络桥接模式

    Ubuntu虚拟机设置网络桥接模式 1 虚拟机网络模式介绍1 1 bridged 桥接模式 1 2 host only 主机模式 1 3 NAT 网络地址转换模式 2 设置网络桥接模式2 1 Windows网络适配器设置2 2 Window
  • 完美洗牌算法

    输入 xff0c 如何在O n 的时间 xff0c 用O 1 的空间 xff0c 将这个序列顺序改为 输入 xff1a 1234567dbcdefg 则输出1a2b3c4d5e6f7g 公式 xff1a y 61 2x mod xff08
  • Windows系统安装及初始化设置

    Windows系统安装激活及初始化设置 1 系统安装1 1 iso镜像下载1 2 系统启动盘制作1 3 BIOS设置1 4 常见问题及解决方式问题1 xff1a 引导方式错误 xff08 ERROR BIOS LEGACY BOOT OF
  • E: Problem executing scripts APT和E: Sub-process returned an error code问题修复

    E Problem executing scripts APT Update Post Invoke Success和E Sub process returned an error code问题修复 问题描述原因分析和解决方案 问题描述 在

随机推荐

  • 解决Docker拉取镜像报Error response from daemon: error parsing HTTP 408 response body的问题

    解决Docker拉取镜像报Error response from daemon error parsing HTTP 408 response body的问题 问题描述原因分析和解决方案 xff1a xff1a 问题解决验证 问题描述 Do
  • ROS下运行ORB-SLAM2双目Stereo(官方数据集)

    写在前面 xff1a Ubuntu版本 ROS版本 opencv版本一定要对应 xff01 xff01 xff01 否则后边编译和运行过程中会有许多问题 xff0c 配环境配到怀疑人生 xff01 我的实验环境为 xff1a ubuntu1
  • Arduino学习总结(未完待续)

    文章目录 Arduino 学习硬件认识Arduino UNO 主要元器件Arduino 端口 软件认识Arduino IDEArduino 程序架构程序基础内容简述数据类型时间控制 计时函数延时函数 串口通信 x1f4de 端口间通信的类型
  • rosdep update 超时问题解决

    span class token operator lt span br span class token operator gt span reading span class token keyword in span sources
  • gRPC学习入门

    grpc框架 参考资料 xff1a 官方文档教学grpc go入门https www cnblogs com hongjijun p 13724738 html GRPC是Google公司基于Protobuf开发的跨语言的 高性能的 通用的
  • 学习随笔#13 模型预测控制(MPC)

    MPC基本概念 模型预测控制 xff08 MPC xff09 是指通过模型来预测系统在某一未来时间段内的表现来进行优化控制 MPC多用于数位控制 xff0c 因此使用系统的离散型状态空间表达形式 xff0c 即 x k 43 1
  • C++ 关于编译期的优化处理

    C 43 43 关于编译期的优化处理 一 define WIN32 LEAN AND MEAN 的作用 1 xff1a 为什么要 define WIN32 LEAN AND MEAN 答案很简单 xff0c 因为要包含尽量精简的内容 xff
  • 数据结构与算法(一)复杂度分析(上):时间复杂度和空间复杂度

    复杂度分析是整个算法学习的精髓 xff0c 只要掌握了它 xff0c 数据结构和算法的内容基本上就掌握了一半 为什么需要复杂度分析 xff1f 你可能会有些疑惑 xff0c 我把代码跑一遍 xff0c 通过统计 监控 xff0c 就能得到算
  • 输入和输出缓冲区更新(试过成功)

    原文 xff1a http blog csdn net u010064842 article details 8769229 1 区分概念 什么是缓冲区 缓冲区又称为缓存 xff0c 它是内存空间的一部分 也就是说 xff0c 在内存空间中
  • 数据结构与算法(一)复杂度分析(下):不同情况下的复杂度变化

    最好 最坏情况时间复杂度 span class token comment n表示数组array的长度 span span class token keyword int span span class token function fin
  • Windows开发:鼠标操作

    本文为作者原创 xff0c 转载请注明出处 一般情况下 xff0c Windows平台下可以使用mouse event函数实现鼠标操作 我们这里使用更新后的SendInput函数 span class token keyword bool
  • RawInput 输入流程【Windows操作系统】

    转载请注明出处 除了键盘和鼠标以外 xff0c 还有很多其他的用户输入设备 xff0c 比如手柄 触摸屏 麦克风等等 xff0c 这些设备统称为人机接口设备HID xff08 Human Interface Device xff09 xff
  • Win10 键盘输入法消失后如何恢复

    原创文章允许转载 xff0c 转载请著明出处 xff0c 不得用于商业用途 xff0c 否则保留法律追责权力 一般Win10 系统在不断地更新过程中 xff0c 会造成一部分数据不同步的问题 xff0c 有时候会发现设置好的英文输入法不见了
  • Windows10安装WDK

    安装包下载 xff08 5 11 2022 xff09 官网地址 xff1a 下载 Windows 驱动程序工具包 WDK Windows drivers Microsoft Docs 点击蓝体字样即可下载 问题汇总 问题1 xff1a 安
  • Windows 无法打开启动配置数据存储拒绝访问

    在我们输入一些命令时会遇到如下报错 xff0c 一般情况下是由于运行cmd的账户权限导致的 方法1 xff1a 1 在系统盘C windows system32 xff08 当前系统安装所在磁盘盘符 xff09 下查找到cmd命令提示符可执
  • 人机交互设备(HID)

    人机交互设备 xff08 HID xff09 是一个设备类型 xff0c 为了使用通用USB接口支持HID设备来代替PS 2接口类型的设备 xff0c 例如键盘 鼠标和游戏控制器等等 在 HID 之前 xff0c 设备只能使用规定好的鼠标或
  • ubuntu服务器安装可视化桌面(Gnome)

    作者 xff1a 锕琅 原文链接ubuntu服务器安装可视化桌面 xff08 Gnome xff09 知乎 目录 基础环境配置和安装 1 切换用户为Root 2 更新获取软件及版本信息 3 安装VNC4Server 4 启动VNC Gnom
  • CocosCreator新手教程——cc.Node基础常用接口(API)

    CocosCreator开发笔记 cc Node基础常用接口 xff08 API xff09 一 常用属性 cc Class extends cc Component properties sprite default null type
  • 终端命令行新手教程——shell脚本

    终端命令基础 摘自 xff1a 菜鸟教程 本文精简自原文章 xff0c 总结了常用部分 xff0c 如需深入学习请点击上方链接 一 运行环境 打开文本编辑器 可以使用 vi vim 命令来创建文件 xff0c 新建一个文件 test sh
  • 面试:如果程序崩溃,可能的原因是什么?

    You are given the source to an application which crashes when it is run After running it ten times in a debugger you fin