当前位置: 首页 > news >正文

系统运行中进行调试修改的重要性--一个小故事

当一个系统已经在运行的时候,如果发现了一个bug怎么办?

好办,改了代码,扔上服务器重启服务呗。

可是,如果这个服务不能停呢?这里有一个实际的例子:

1998年时,NASA 在执行深空1号任务时,发现飞行器上一段控制实验用的lisp代码有一个竞争条件(race condition) 的bug ,在地面测试的时候没有捕获。此时已经距离发射一年半了,飞行器在 1亿英里之外的太空中。而这个程序可以在运行的时候,允许调试,并有一个REPL环境(Read-Eval-Print-Loop),这样程序员可以在地面远程(确实很远)连接到飞行器上正在运行的Lisp进程,调试修复代码。

一个程序员这样描述:调试一个一亿英里外价值一亿美元的硬件上的代码是很有趣的经历。

相关文章:

  • 进入软考倒计时
  • Ember.js 示例
  • 《MEF程序设计指南》博文汇总
  • SQL INNER JOIN 关键字 用法
  • 几种经典算法回顾
  • SQL 读取不连续的数据,如读取第30到40之间数据
  • 工作中电子邮件的技巧
  • vector容器与iterator迭代器
  • Oracle Certification Program
  • python中if __name__ == '__main__'
  • 分布式设计与开发(二)------几种必须了解的分布式算法
  • 字符的全排列与组合问题总结
  • 与王建硕的对话:写Blog促进思考,喜爱Linux和PHP
  • Tomcat环境配置
  • linux网络编程之socket(十四):基于UDP协议的网络程序
  • 2017 前端面试准备 - 收藏集 - 掘金
  • docker python 配置
  • Git初体验
  • If…else
  • javascript从右向左截取指定位数字符的3种方法
  • Java到底能干嘛?
  • maven工程打包jar以及java jar命令的classpath使用
  • Redux系列x:源码分析
  • vagrant 添加本地 box 安装 laravel homestead
  • 从零搭建Koa2 Server
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 两列自适应布局方案整理
  • 前言-如何学习区块链
  • 如何选择开源的机器学习框架?
  • 收藏好这篇,别再只说“数据劫持”了
  • 通过npm或yarn自动生成vue组件
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • #13 yum、编译安装与sed命令的使用
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • ${ }的特别功能
  • (C语言)fread与fwrite详解
  • (Python第六天)文件处理
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (ZT)出版业改革:该死的死,该生的生
  • (六)c52学习之旅-独立按键
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (轉貼) UML中文FAQ (OO) (UML)
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net mvc 获取url中controller和action
  • [ C++ ] STL_list 使用及其模拟实现
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [20150707]外部表与rowid.txt
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [BZOJ1053][HAOI2007]反素数ant
  • [CCIE历程]CCIE # 20604