中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

简介

关于本文

在软件整个生命周期中,每一个环节都有可能出现软件问题,轻则影响该模块业务的正常使用,重则影响整个软件的运行。因此每一个软件工程师都应该学会如何分析定位软件问题。随着软件规模不断增大,软件问题的分析定位难度也变得越来越高。

为了帮助鲲鹏平台的开发者和使用者更好的使用鲲鹏平台,本文基于在鲲鹏平台上的软件开发维护经验,整理了一些疑难问题的分析定位思路及案例,帮助读者更好地使用鲲鹏平台。

基于在鲲鹏平台的大量迁移经验,软件问题一般可以分为内核问题和应用程序问题两大类。而应用程序问题根据其开发语言的不同,分析思路和定位工具都有所差别,因此本文将分内核问题和应用程序问题两部分进行介绍。其中应用程序问题按照开发语言的不同分别介绍,每部分都会介绍一些常用定位工具,几种疑难问题的分析思路以及具体疑难问题案例。此外鲲鹏开发套件Kunpeng DevKit包含的诊断调试功能可以帮助开发者实现内存泄漏,OOM等问题的分析,快速定位解决。

软件问题分析思路

大量的软件工程师经过大量的项目,总结出软件问题分析的一般思路,如图1所示。本文针对各疑难问题分别总结了具体定位分析思路,但总体遵循软件问题分析的一般思路。

图1 软件问题分析的一般思路

常用分析方法

分析软件问题有以下四种常用方法:

  • 查询:比如查看软件日志信息,查看/proc记录的一些信息。
  • 打印:通过在代码里增加打印信息收集更多信息。
  • 单步调试:常见的比如使用GDB、kdb等调试器进行调试。
  • 转储机制:将软件崩溃时的信息进行转储,用于后续软件定位,比如LKCD、kdump等。