软件崩溃了,该如何解决?

解决问题讲究的是对症下药。软件崩溃,也同样如此。我们需要找到崩溃的原因。对于软件崩溃,我们如何去定位问题,这就是你今天问的问题。

中医的望闻问切,是很有用的。对于软件的问题的调查和分析,同样也可以望闻问切。

一、望

望,就是观察现象。所谓观察现象,就是观其的运行的情况。软件是如何运行起来的,又是如何崩溃的,崩溃的提示是什么。这些是很表面的崩溃现象,可以很直观的看到。这个层面,我们只需要观察到基本的运行的现象,搜集相关的描述。当然,也不是简单看着崩溃一次就完事的。我们至少要了解这些情况:操作系统、运行权限、软件的操作流程、崩溃的错误提示,崩溃的现象等。这些情况看似很简单,但是却给定位错误提供了最基础的根据。

除了很有经验的人,或者对自己的软件了如指掌的人,通过望就可能知道问题所在。因为软件之前会出现这些问题,所以就可以直接找到问题所在。而对于一般的水平的人,或者软件确实很复杂,那么就很难做到一看就知病因的地步。这个也很正常。这一步就是搜集基本的直观的错误信息,这样就可以了。

这一步也不能完全是看一遍就了事的。最终有没有解决,还是要通过这一步来观察,至少要从表面上消除症状。如果所有症状都和找到的问题一一对应,解释的合情合理,解决后症状就消失了,还原症状又出来了,这样就确定是真的找到问题,至少在症状上是真的找到问题了。

另外,很多时候,不是一遍就行,还需要反反复复的让软件死来死去,从这个过程中观察规律。这也是搜集现象的一种手段。单次的运行只有一次现象,当大量的现象汇聚就形成了一个规律性现象,此时可能更能表现出问题。举个例子,一个产生随机数的程序,一次两次可能只是觉得随机数始终不大于10,你以为这是正常的。但是通过大量的试验,结果一直都不大于10,而你当初设定的范围是0-100,如此来看,就很可能有问题。然后再通过这个现象分析出来,根据统计学的概率论,一直小于10肯定不正常。如果你只是测试几次,这个问题是很难查出来的。这就是规律性问题。

二、闻

闻,就是听声息。所谓听声息,就是因为直接看是看不出来的。所以需要进一步的去找症状。注意,这里还是在找症状。只不过是找的更加深入一点。声息不是表面的气色,是看不见的。在软件上,我们对应到内存、CPU、磁盘等的操作情况。很多复杂的问题,往往不是表面现象能看得出来的。此时我们需要听其声息。毫不夸张的说,我们甚至有时候会去听声音哦,比如听硬盘转动的声音,听风扇的声音等等。硬盘转速的变化,可能是由于程序异常的读写导致转速不规律,或者陷入死循环的读写磁盘,都会导致硬盘疯狂旋转。当然,这里说的是机械硬盘。如果是固态呢,我们可以感受温度。而风扇的疯狂则有可能是陷入死循环,导致CPU长期执行高运算量的计算而发热很大,风扇自然转速加快以散热。

举这些例子并不是说让你去这么做,当然有时候确实需要这样做。特别是做硬件开发,那太常见了。比如要闻一下电路板是否烧焦了。更多时候,软件问题很少会涉及到以上的那些操作。

我们这里说的闻,更多指的是深入一层次的观察现象。因为表面的现象已经无法分析出问题。我们一般会从内存的事情情况、CPU的使用情况、硬盘的读写方面着手观察。通过CPU的使用率,可能分析出死循环、死递归等。而硬盘读写可以分析出文件的读写卡死问题。内存的问题则有很多的内存占用,以至于导致系统内存陷入无可用内存状态,最后甚至导致整个系统挂掉,这个我曾经就遇到并解决过。

那么具体如何看,最简单的工具就是,任务管理器。当然还有很多逼格很高的工具,可以分析进程线程、动态库、锁等更高级的东西。比如有的工具可能分析的出来死锁问题而导致的软件被系统杀死。那么分析的深度如何,就看个人的知识水平如何了。如果你连进程是什么都不知道,就不要想着能够操作这些高级的工具了。而这些分析的过程,还是需要自己去多实践多总结。没有一个治百病的经验,只有实践才是最好的工具。

三、问

问,就是询问症状。如果你的软件给用户使用,可能你前面两步搜集到的信息确实有限,即使用户录屏了,依然还是满足不了的话,那么你就需要去询问情况了。

询问是很有必要的。同时也要注意一个地方,那就是先从最白痴最基础的地方问起。比如用户没有网,然后启动你的程序,你的程序没有考虑这个问题,然后就直接认为是有网,然后挂了,抛了网络异常。而你对此是没有预先考虑到的,所以出错了。如果你先不问用户电脑联网情况,就是问一大堆,可能都找不到问题所在。这也可能是因为你本身对于联网这个事情也不清楚导致的。

询问用户是弥补你不能直接搜集问题现象。当然了,询问用户不是我们这里要说的重点。我们询问的应该是计算机。你是不是觉得询问计算机是非常神奇的事情。计算机又不能说话。这就是人机交流,而且是程序员必备的技能哦。

所谓询问计算机,其实就是要主动去与计算机交流,看看计算机能够给你提供多少信息。只要你足够厉害,你问什么计算机都会给你什么信息。说的直白点,也就是做条件测试。这是一种主动性的现象观察。通过对不同情况的模拟测试,获得对应的信息,然后再反过来分析现象。这个在望的基础上走的更远。往往很多软件的问题的定位都是通过问计算机得以解决的。

用到的手段如:控制台命令测试、系统设置的切换、切换不同的操作系统运行、使用不同的权限运行、模拟不同的操作方式、使用不同的用户张号等等。方法很多,不一而足。更多是结合自己软件的特性来做针对性的测试观察。

四、切

切,就是把脉。通过以上的深度调查,必然能够搜集到大量的信息,如果还不能确诊,那么就要继续深入。最后一道就是把脉。把脉的是代码。我们通过现象,定位代码的大致范围,然后仔细分析代码的流程,然后进行大量的测试,去对照现象进行分析,或者临时修改代码进行测试性运行,慢慢缩小问题的范围,最后定位问题。

代码是程序的脉,代码是程序的灵魂。在代码中调试错误的工具和方法,相信各个IDE提供了强有力的工具。我就不说了。我们要用好手中的每一个调试工具,让自己更多了解程序的运行情况。

那么最后说一下如何提高解决效率。

1.搜集充足的现象

没有足够的现象,是很难定位问题的,问题越精确,也就能越快定位问题。问题现象了解的越多,就越能准确定位问题所在地。如果现象太少,目标就太泛,这样解决效率自然很低。如何搜集问题,在前面已经详细讲述了。

2.保持足够冷静的思维

思维的冷静是非常重要的。遇到的问题越紧急,越需要冷静的思维。思维的冷静不代表你不着急,只有冷静的思维,才能在众多的现象中找到蛛丝马迹。

3.发散思维,打破思维僵局

思维僵局,往往是找问题最大的天敌。如果在一个问题上,始终都不得其解,记住,要及时退出这样的状态。你可以先放下问题,走两步,或喝喝茶。换一个方向思考分析问题,往往是非常有用的。

4.细心分析现象和代码流程

在大量错误涌来的时候,细心很重要。我们要细心对待每一个问题,然后再认真的分析代码的流程。很多问题可能是并发症,解决了源头问题就可以解决所有问题。只有通过各种下问题,逐步追根溯源,慢慢找到最源头,然后从源头上解决。

那么这四点,加上前面的搜集和调查问题的方法,应该是非常高效的解决办法了。看似简单,却不简单。而每一步都需要大量的实践,在长期的实践中积累到足够的经验和技巧,才能快速的解决各种疑难杂症,没有捷径可走。

如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!
C语言C++学习企鹅圈子】,分享(源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

编程学习书籍:

编程学习视频:

软件崩溃了,该如何解决? 解决问题的关键要会对症下药!相关推荐

  1. Revit二次开发——另存为软件崩溃的问题及解决办法

    1.另存为软件崩溃的问题 经过我的多次实验,发现另存为软件崩溃的原因是我安装的wps导致的.这点wps可得长点心,害苦了其他软件. 2.解决办法 这里另存为的代码片段如下: private void ...

  2. Photoshop经常崩溃解决技巧,防止ps软件崩溃的四个解决方法

    不想Photoshop总是崩溃,最重要的是,记得更新升级.不仅仅Photoshop要升级到最新版本,驱动也要升级到最新.当然,这一个说法还值得考究,毕竟最新版本的Photoshop对电脑设备的硬件要求 ...

  3. dev c++ 调试时候发生软件崩溃解决办法

    dev c++ 调试时候发生软件崩溃解决办法 安装好dev cpp,准备调试的时候发现软件崩溃,这种情况很好解决.只要在工具菜单中点开编译选项,找到代码生成/优化一栏,将链接器的"产生调试信 ...

  4. linux系统某些应用无法输入,ubuntu 16.04下搜狗输入法不能输入中文解决(linux下常见软件崩溃问题解决方案)...

    之前一段时间正常使用的搜狗输入法突然无法输出中文(具体现象是,可以呼出搜狗输入法界面,但是候选词列表无显示),解决之后记录下来,希望能为同样遇到这个问题的人提供参考 我的系统是 ubuntu 16.0 ...

  5. ubuntu 16.04下搜狗输入法不能输入中文解决(linux下常见软件崩溃问题解决方案)

    之前一段时间正常使用的搜狗输入法突然无法输出中文(具体现象是,可以呼出搜狗输入法界面,但是候选词列表无显示),解决之后记录下来,希望能为同样遇到这个问题的人提供参考 我的系统是 ubuntu 16.0 ...

  6. iOS app崩溃率,如何解决线上闪退

    //联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄 1.如何追踪app崩溃率,如何解决线上闪退 当iOS设备上的App应用闪退时,操作系统会生成一个crash日志,保存在设备上.cra ...

  7. [置顶]Win2012R2的一个Bug安装群集后可能引发的软件崩溃问题及相应补丁

    [置顶]Win2012R2的一个Bug安装群集后可能引发的软件崩溃问题及相应补丁 如标题,笔者查阅资料发现微软声称安装故障转角色后就可能发生上述描述问题,但不止于SSMS崩溃.建议使用win2012R ...

  8. PPT软件崩溃或者未保存该怎么办?怎样避免PPT崩溃?

    PPT软件崩溃或者未保存该怎么办?怎样避免PPT崩溃? 1.崩溃后数据恢复方法 2.怎样避免PPT崩溃 1.崩溃后数据恢复方法 https://www.zhihu.com/question/47029 ...

  9. win10卸载电脑管家就蓝屏_告别哭脸!Win10蓝屏崩溃问题可以这么解决

    前不久,Win10强制用户更新的事件是闹得沸沸扬扬.讲道理,想升级的人早就升了,不想升的人呢,自有千万种理由.比如最主要的原因,还是怕了Win10的哭脸,也就是喜闻乐见的蓝屏崩溃问题.那遇到Win10 ...

最新文章

  1. Java时间和时间戳的相互转换
  2. matlab把符号数,Matlab 符号与数值之间的转换
  3. STM32F0使用LL库实现PWM输出
  4. 提高网站打开速度的7大秘籍
  5. oracle学习笔记---oracle10g 卸载方法
  6. 弹性地基梁板实用计算_建筑地基基础设计规范要点
  7. Innodb中常见SQL语句设置的锁类型
  8. Java 实现线程的两种方式
  9. psn账号 证明你不是机器人_世界上最聪明的机器人,AlphaGo智能机器人轻松击败世界围棋冠军...
  10. poj1456(贪心+并查集)
  11. Practical JAVA(三)关于final
  12. (六)、Redis的AOF持久化---Redis设计与实现读书笔记
  13. 怎么把c盘的软件移到d盘?
  14. STM32 使用基本定时器实现微秒us级延时
  15. python中sys模块是干什么的_python中sys模块的介绍和使用
  16. 403forbidden
  17. 【机器学习】过拟合与欠拟合
  18. API ,批量添加
  19. Linux进程调度与性能优化 | 真货
  20. 前端漂亮的字体 font-family

热门文章

  1. 多比(SVG/VML)图形控件
  2. PageRank算法第一篇
  3. [Docker] 基于 Leanote 搭建私有笔记服务器的经历
  4. 【数字图像处理笔记(六)】之空间滤波详细分析
  5. 墨菲安全入选中关村科学城24个重点项目签约
  6. nVisual综合布线可视化管理系统解决方案
  7. 机器人误触防熊喷雾24人住院?这个网站收集AI‘翻车’案例,所有‘罪证’都不放过
  8. DNS服务器的配置以及相关知识
  9. PC端微信dat怎么打开_微信dat解密_微信dat用什么软件打开
  10. 您玩儿转手机通讯录了吗?