调试程序往往比编写程序更浪费时间,正如一些有经验的程序员所说,软件的开发应该包括20%的程序编写时间和80%的Debug时间。并且调试程序比编写程序要难2倍。编写巧妙的程序并不一定调试方便。
程序的调试有很多方法,比如最常见的VC之类的IDE都提供加断点,逐步执行,逐段执行的功能。但是这只能针对程序某个微小的片段,对于前期bug的范围的界定并不是很方便。况且对于不满IDE的臃肿,身陷Vim, notepad++, Editplus之类的编辑器之中,我们需要找到更加高效的程序调试和测试方法。
在程序执行的关键点打印Log是一个非常高效的方法,如何打印log进行程序调试呢? 以PHP程序开发为例,需要2个步骤:
1. PHP函数中两个关键的打印变量的方法
print_r var_dump
所以我们可以在关键的地方打印需要的变量。
2. 收集我们在程序中打印的变量
我们可以把程序执行过程中打印的变量逐条写到文本文件里。在程序执行完毕之后进行分析,查找Bug,修正程序。
PHP中打印时间,和变量的程序片段:
function file_log($message) {
global $file_log_location;
ob_start();
echo date("Y-m-d H:i:s \t", time());
print_r($message);
echo "\n";
$var = ob_get_contents();
ob_end_clean();
$open=@fopen($file_log_location,"a");
@fwrite($open,$var);
fclose($open);
}
应用此段程序还需要对log的存储位置$file_log_location
赋值。
在需要的地方插入此片段,执行PHP程序,就会得到所需信息。
但是假如是长时间运行的程序如何在程序执行的过程中就查看到log的信息?相信你已经想到了可以在shell中用
tail -f /var/debug.log
这样总可以看到程序吐出的最新的debug信息。
附件是Drupal中进行debug的一个小的module,做drupal开发的同学可以尝试一下。
Drupal debug module
虽然本文针对PHP开发所言,但是这种方法也适合python,java之类的动态语言的开发。
原文地址:http://blog.eood.cn/efficient_debugging_php_java_python
–EOF–
分享到:
相关推荐
总之,有效的程序调试和软件测试是保证软件质量的基础,VB提供的工具和方法为开发者提供了强大的支持,帮助他们发现和修复错误,确保软件的稳定性和可靠性。通过熟练掌握这些技巧,开发者能够更高效地调试代码,提升...
本文将从《匠人手记》中提炼出一系列实用的单片机程序调试技巧和方法,帮助读者更高效地进行单片机程序的调试。 #### 二、调试前的准备工作 1. **熟悉开发环境**:熟练掌握开发工具的基本操作如设置断点、单步执行...
编写单元测试和集成测试,确保各个模块的正确性和效率。 6. **性能优化**:利用C64x+ DSP的向量化指令和流水线特性进行性能优化。对于复杂的视频处理任务,可能需要考虑多核并行处理和任务调度。 7. **硬件接口...
### Windows程序调试时快速记录日志的方法 #### 摘要 在软件开发过程中,调试是必不可少的一个环节。为了能够更好地定位程序中的错误或者异常行为,开发者常常会使用日志记录的方式来跟踪程序运行过程中的关键信息...
程序调试包括识别和修复语法错误、逻辑错误以及运行时错误。语法错误分为两类:致命错误(error)和警告错误(warning)。致命错误会导致编译失败,而警告错误虽不影响编译,但可能导致运行时问题。 在不同的开发...
### 细谈VC程序调试的若干方法 #### 引言 在软件开发过程中,调试是一项至关重要的技能。它不仅能够帮助开发者找到并修正程序中的错误,还能提高代码质量和开发效率。Visual C++(简称VC++)作为一款广泛使用的C++...
本文介绍了一种基于Tornado集成开发环境的VxWorks应用程序编写和调试方法,以控制数码管显示为例,详细阐述了实验的全过程,包括建立交叉编译环境、配置目标服务器、编写下载工程和测试代码等步骤。 首先,交叉编译...
"程序调试工具"就是专门为这个目的设计的,它们提供了一系列高效的功能,使得调试过程更为便捷。这些工具通常具备多种特性,包括断点设置、步进执行、变量查看、调用栈分析、内存检查以及日志记录等,极大地提高了...
《程序调试羊皮卷》是一本专为程序员打造的调试技术宝典,旨在帮助开发者们提升在编程过程中解决错误和优化代码的能力。调试是软件开发不可或缺的一环,它不仅是找出并修复问题的关键步骤,更是提升代码质量和效率的...
### SAP程序调试技巧详解 #### 一、引言 在SAP系统开发中,调试是一项至关重要的技能。本文档旨在详细介绍一种特殊的调试方法——通过一个简单的文本文件来启动调试模式,这种方法是在博客文章中提到的第四种解决...
总之,“串口精灵调试助手测试程序”是串口通讯领域中的一款得力工具,其强大的调试功能和用户友好的界面,使得无论是初学者还是经验丰富的专业人士都能得心应手地进行串口通信测试。通过熟练掌握这款工具,用户能够...
以上是程序调试的一些核心概念,熟练掌握这些技巧将使开发者能够更高效地定位和修复代码中的问题,从而提高软件质量和开发效率。通过深入学习“02. 程序调试.zip”中的内容,你将有机会全面提升自己的调试能力。
本文将深入探讨程序调试的核心思想与实践方法,特别关注以Bug为中心的调试策略,通过具体实例、诊断技巧以及调试工具的应用,帮助读者提升编程效率和代码质量。 #### 一、调试思想:以Bug为中心 **1.1 Bug定位的...
作者陈玉泉和陈汉松,分别来自常州工学院计算机信息工程学院和江苏工业学院信息科学系,基于他们在教学和科研实践中的经验,对VB程序调试和错误处理进行了详尽的分析。 ### VB程序的错误类型 #### 编译性错误 ...
- **开发板**:用于硬件测试和验证。 - **ULINK2仿真器**:用于连接开发板和计算机,实现代码下载和调试。 #### 六、结语 本文介绍了在Keil uVision中进行程序调试的一些常用技巧,包括编译选项的选择、调试准备...
**PyFuzzer:自动化高效内存模糊测试方法** 模糊测试(Fuzz Testing)是一种软件测试技术,主要用于发现程序中的未知漏洞,特别是输入验证错误。PyFuzzer是Python实现的一个专门用于进行内存模糊测试的工具,它利用...
以下将详细讲解如何在Eclipse中进行程序调试。 1. **设置断点**: 断点是调试中的关键元素,它允许我们在特定行暂停程序的执行。在源代码的左侧栏,点击某行号旁边的空白区域,会出现一个红点,表示该行设置了断点...