deepway

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  1 Posts :: 9 Stories :: 1 Comments :: 0 Trackbacks

常用链接

留言簿(4)

我参与的团队

搜索

  •  

最新评论

  • 1. re: 软件运行日志[未登录]
  • 我觉得调试日志不应该只记录软件的非正常过程吧,而是记录软件的运行过程。期间有不正常的时候用warning,error和fetal来记录。
  • --hi

软件运行日志                    
--------------------------------------------------------------------------------
    现代软件日益复杂,彻底消除软件中的错误已经被证明是不可能的,那么,及时发现错误、定位错误现场信息,迅速排除软件错误就成为非常重要的事情,甚至在软件实际运行环境中也是如此。软件运行日志就是捕获错误现场信息的一种重要手段。

    软件运行日志是给谁看的?我认为是软件维护人员、资深客户(比如客户方的系统管理员)。软件中的错误信息,应该分为两类,一类是软件用户能够理解的,另一类是软件用户不能理解的,需要软件维护人员介入的。前者,通常与软件用户的操作行为相关,软件用户在得到提示后,可以自行进行处理;而后者,通常与软件自身缺陷、软件部署环境问题相关的,只有软件维护人员才能处理的。很明显,对于后者的详细内容,没必要用告警对话框的方式提供给软件用户,而且这样做,会大大增加软件错误处理的复杂度。直接将其写入运行日志,是最简便、也最可靠的方法。可以想象下面的场景,应用软件在某台电脑上运行出错,软件维护人员或客户方系统管理员查看运行日志,发现了一些系统模块调用失败的信息,并与开发人员远程沟通,开发人员根据这些信息,迅速定位报告错误的代码,随后开发人员可能反馈,某个系统组件没有的到正确的配置,也可能反馈,软件中有一处缺陷,将在下一个版本或补丁包中得到修正。不管是哪一种情况,这一过程让我们感到的是效率和愉悦。

    在了解到软件日志是给谁看的之后,我们就可以合理制定软件中的错误处理策略。一些错误,我们需要逐层向上报,最终得到妥善处理或者向用户给出提示;另一些错误,我们直接将其信息写入软件运行日志,并向上反馈本函数发生了错误,未能成功执行。

    软件运行日志的内容有哪些?我认为可以分为:关键信息提示、警告提示、错误提示、致命问题提示、调试日志。关键信息提示,是指软件执行到了某些重要的节点,就将相应的信息写入软件运行日志,通过这些关键信息提示,我们可以了解软件的大致运行过程是否正常,而它成本非常低廉,相比安装庞大的开发调试环境。警告提示和错误提示,都是用于提示软件中的错误,那么两者之间的区别如何界定呢?还有,调试日志也是报告软件错误的,与这两者又如何相区别呢?

    我认为,调试日志与警告提示、错误提示的本质性区别在于,调试日志是面向开发人员的,是从软件执行的角度发出的;警告提示、错误提示是从软件功能的角度发出的。换而言之,调试日志是记录软件运行中的非正常现象,而警告提示、错误提示是记录软件某项功能失常的相关信息。

    我认为,警告提示、错误提示的本质性区别在于,警告提示是软件功能出现问题,但没有彻底失效;错误提示,就是此项功能完全失效,该项功能停止执行,立即返回;致命问题提示,则是软件整体安全受到威胁。反映到程序中,通常就是,在一个函数中检测到错误后,该函数以失败的方式返回,就报告错误提示;若函数仍能继续执行,就报告告警提示;若该错误严重违例,比如断言违例、内存溢出、堆栈溢出等威胁稳定性的错误,就报告致命问题提示。

    一般来说,致命性提示,通常是与软件自身缺陷引起的,应当引起开发人员的重视;警告提示、错误提示多半是软件运行环境配置问题引起的,但也不排除软件缺陷、用户操作等因素,应当引起软件维护人员、系统管理员的注意。

    对于软件维护人员,调试日志意义不大,而其数据输出量却往往相当大,因此,在软件部署运行环境下,通常应当通过配置开关,关闭调试日志输出。只有开发人员介入后,才有必要打开该开关,从而在缺乏调试工具的环境中,获得丰富的调试信息。

    总的来说,将每一种错误、每一种软件环境配置问题都以对话框的方式提示出来,或许可以减小维护成本,代价却是开发成本成几何级数增长;软件开发中省掉错误处理,的确可减少一些成本,代价是即便一个环境配置问题,都需要开发人员现场调试,软件维护成本大大增加。而软件运行日志,无疑是两者之间取得平衡的关键性武器。

posted on 2010-08-02 18:05 maxime 阅读(2746) 评论(1)  编辑 收藏 引用 所属分类: 设计方法 & 编程方法

Feedback

# re: 软件运行日志[未登录] 2012-10-07 18:09 hi
我觉得调试日志不应该只记录软件的非正常过程吧,而是记录软件的运行过程。期间有不正常的时候用warning,error和fetal来记录。  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理