调试的九个基本方法(原则)

调试九法

规则1理解系统

规则2制造失败

规则3不要想,而要看

规则4分而治之

规则5一次只改一个地方

规则6保持计跟踪

规则7检查插头

规则8获得全新观点

规则9如果你不修复bug,它将依然存在

规则一:理解系统

1 阅读手册

如果你是一位工程师,正在调试自己公司的产品,那么你需要读一读内部手册。工程师们设计它是用来做什么的?读一下功能说明以及所有的设计规范,研究一下图表、时序图和状态机。分析它们的代码,还要读一下注释。(是的,读一下注释,这非常重要。)一定要检查产品的设计。查明构建它的工程师们打算用它来做什么

2知道什么是正常的(基础知识)

知道什么是正常的可以帮助你意识到什么是异常的

3 知道工作流程

当你尝试寻找bug时,必须知道要查找的路线。开始时,你需要猜测在哪里把系统分隔开,以便隔离问题,这种猜测完全取决于你对系统功能划分的了解。你至少要大体上知道所有的模块和接口都是做什么的。

你应该知道系统中的所有API和通信接口都是用来交换什么数据的。还应该知道每个模块或程序如何处理它们通过这些接口收发的数据。如果代码是高度模块化或面向对象的,那么接口将很简单,模块也有良好的定义。观察接口就很容易解释你看到的东西是否正确。

当系统有一些部分是“黑盒子”时,这意味着你不知道它内部有什么,但应该知道它们如何与其他部分交互,这至少可以帮助判断问题是在内部还是外部。如果问题发生在黑盒子内部,你必须更换盒子,但如果问题出在外部,就可以修复它了。

4 了解工具

调试工具是用来观察系统的眼和耳,你必须选择正确的工具,正确地使用工具,并正确地解释得到的结果。很多工具提供了非常强大的功能,但只有精通它们的用户才了解。你越是精通工具,就越容易查明系统中发生了什么事情。要花时间学习与工具有关的一切,通常,查明系统行为的关键(参见规则3)是你的调试器设置得怎样,或者是否正确地触发了分析器。

我们还必须了解工具的局限性。走查源代码可以显示逻辑错误,但无法显示时序和多线程问题;剖析工具可以暴露出时序问题,但显示不出逻辑错误。模拟示波器(analog scope)可以看到噪声,但无法存储太多数据;数字逻辑分析器可以捕获大量的数据,但看不到噪声

5 查阅手册

小结:

  • 阅读手册。它会告诉你在使用除草机时,要在除草头上涂润滑油,这样除草绳就不会被烧化。
  • 仔细阅读每个细节。有关微处理器如何处理中断的详细信息就隐藏在数据手册的第37页。
  • 掌握基础知识。电锯本来就会发出很大的噪声。
  • 了解工作流程。引擎的转速可能与轮胎的转速不同,这是由传动轴造成的。
  • 了解工具。弄清楚体温计的哪一端才是用来测量体温的,弄清楚Glitch-O-Matic逻辑分析器的强大功能是如何使用的。
  • 查阅细节。连爱因斯坦都会去查阅细节,而Kneejerk却盲目相信自己的记忆力。

规则二:制造失败

1制造失败

重现失败的现象,并找到失败的规律

2 从头开始

试着从一个已知的状态开始,例如刚刚重启的计算机,或者是你一早步入车库时汽车的状态

3引发失败

在调试故障的时候,如果需要手工执行很多步骤,那么使这个过程自动化会很有帮助。

4 不要模拟失败

引发失败(正确)和模拟失败(错误)这二者之间存在着非常大的差别。正确的方法是模拟那些导致失败发生的条件。但是,不要试图模拟失败机理本身。

如果无法快速地再现它,那么不要为了使它出现而改变你的模拟环境。这样会产生新的配置,而不是原来发生错误的那个配置了。无论一个系统在哪种常规配置下发生故障(即使是间歇性故障),都要在该系统上使用该配置来查找问题。

5处理概率性bug

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
步进电机调试基本方法原则如下: 1. 确定电机型号和驱动器型号:在选择步进电机和驱动器时,需要考虑电机的转速、扭矩、电压等参数,以及驱动器的最大电流、细分数等参数。 2. 连接电机和驱动器:将步进电机连接到驱动器的相应接口上,并根据电机和驱动器的连接方式进行正确的接线。 3. 驱动器参数设置:根据电机和驱动器的参数手册,设置驱动器的细分数、电流大小、加减速度等参数。 4. 进行运动控制:编写相应的程序,使用控制器对电机进行运动控制,包括正转、反转、停止、加速、减速等操作。 5. 整运动参数:根据实际情况,整电机的运动参数,包括加减速度、最大速度、步距角等参数。 以下是一个具体的步进电机调试案例: 假设我们要调试一台步进电机,它的型号是17HS4401,驱动器型号是DM542T。首先,我们需要将电机按照正确的方式接到驱动器上,然后根据电机和驱动器的参数手册,设置驱动器的细分数、电流大小、加减速度等参数。例如,我们可以将细分数设置为8,电流大小设置为1.5A,加减速度设置为500mm/s^2。 接下来,我们编写一个程序,使用控制器对电机进行运动控制。我们可以让电机顺时针旋转1圈,然后逆时针旋转1圈,并在每个方向上停留1秒钟。代码如下: ``` #include <Stepper.h> const int stepsPerRevolution = 200; Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); void setup() { myStepper.setSpeed(300); } void loop() { myStepper.step(stepsPerRevolution); delay(1000); myStepper.step(-stepsPerRevolution); delay(1000); } ``` 最后,我们可以根据实际情况,整电机的运动参数,例如,增加加减速度或者最大速度,或者改变步距角等。通过不断调试,我们可以使步进电机运转更加稳定和精确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值