The Nine Indispensable Rules for HW/SW Debugging 软硬件调试之9条军规

I read this book in the weekend, and decided to put the book on my nightstand. It‘s a short and funny book, clear insight and good stories, strongly recommend entry even senior engineers to read it.

Introduction

This book tells you how to find out what’s wrong with stuff, quick. It indeed short and fun. I finished reading in the weekend and made some notes. And it convinced me the Nine Rules powerful to hardware/software design and design, as some rules I already have, which helped me find the bugs efficiently. Some engineer probably say it’s an old book, which is not applicable today, as we have big progress on HW/SW debug tools and instrument. Although tools can help reduce or find bugs more or less, it will bring some latent bugs, which is harder to find. Besides, over-dependency on tools blocks a new engineer to become a clear thinker, obviously, this side effect is harmful in one’s engineer career life.

how can that work?

a. when it took us a long time to find a bug, it was because we had neglected some essential, fundamental rule; once we applied the rule, we quickly found the problem.

b. People who excelled at quick debugging inherently understood and applied these rules. Those who struggled to understand or use these struggled to find bugs.

Obvious vs Easy

These things are obvious (fundamentals usually are), but how they apply to a particular problem isn‘t always so obvious.

Don‘t confuse obvious with easy - these rules aren‘t always easy to follow, and thus they‘re often neglected in the heat of battle.

Debugging vs Troubleshooting

Debugging usually means figuring out why a design doesn’t work as planned. Troubleshooting usually means figuring out what’s broken in a particular copy of a product when the product’s design is known to be good.

The Nine Indispensable Rules

1. Understand the System 了解系统

No1 rule is the most important, and it deserves much time if you really want to fix bugs ASAP.

1.1. Read the manual

  HW engineer has to read chip datasheet, and SW engineer has to read API/Frame document.

1.2. Read everything in depth

  Read everything, cover to cover.

1.3. Know the fundamentals

1.4. Know the road map

1.5. Understand your tools

1.6. Look up the details

2. Make it Fail 复现故障

It seems easy, but if you don‘t do it, debugging is hard.

2.1. Do it again

2.2. Start at the beginning

2.3. Stimulate the failure

2.4. But don‘t simulate the failure

2.5. Find the uncontrolled condition that makes it intermittent

2.6. Record everything and find the signature of intermittent bugs

2.7. Don‘t trust statistics too much

2.8. Know  that "that" can happen

2.9. Never throw away a debugging tool

3. Quit Thinking and Look 观察!而不是瞎想

3.1. See the failure

3.2. See the details

3.3. Build instrumentation in

  Use source code debuggers, debug logs, status messages, flashing lights, and rotten egg odors.

3.4. Add instrumentation on

  Use analyzers, scopes, meters, metal detectors, electrocardinography machines, and soap bubbles...

3.5. Don‘t be afraid to dive in

3.6. Watch out for Heisenberg

  Don‘t let your instruments overwhelm your system.

3.7. Guess only to focus the search

4. Divide and Conquer 分而治之,各个击破

4.1. Narrow the search with successive approximation

4.2. Get the range

4.3. Determine which side of the bug you are on

4.4. Use easy-to-spot test patterns

4.5. Start with the bad

4.6. Fix the bugs you know about

4.7. Fix the noise first

5. Change One Thing at a time 每次只改变一个因子

5.1. Isolate the key factor

5.2. Grab the brass bar with both hands

5.3. Change one test at a time

5.4. Compare it with a good one

5.5. Determine what you changed since the last time it worked

6. Keep an Audit Trail 调试日志

6.1. Write Down What You Did, in What Order, and What Happened as a result

6.2. Understand that any detail could be the important one

6.3. Correlate events

6.4. Write it down! No matter how horrible the moment, make a memorandum of it

7. Check the Plug 检查所有设定条件

7.1. Question your assumptions

7.2. Start at the beginning

7.3. Test the tool

8. Get a Fresh View 换个角度看问题

8.1. Ask for fresh insight

8.2. Tap expertise

8.3. Listen to the voice of experience

8.4. Know that help is all around you

8.5. Don‘t Be Proud

8.6. Report Symptoms, Not Theories

8.7. Realize that you don’t have to be sure

9. If you didn‘t fix it, it ain‘t fixed 你不解决bug,bug就不会解决

9.1. Check that it’s really fixed

9.2. Check that it’s really your fix that fixed it

9.3. Know that it never just goes away by itself

9.4. Fix the cause

9.5. Fix the process

The Link to the Book

时间: 2024-08-02 06:55:43

The Nine Indispensable Rules for HW/SW Debugging 软硬件调试之9条军规的相关文章

[书目20160526]Brain Rules 让大脑自由:释放天赋的12条定律

推荐序1 12条定律,让大脑更聪明推荐序2 走过迷雾地带前  言 人人都有一个不可思议的大脑 定律1:越运动,大脑越聪明 信不信,“驴友”比“沙发土豆”更聪明! 老板,请把办公室的咖啡机换成跑步机! 每周两次有氧运动,跟老年痴呆说Bye Bye! 定律2:大脑一直在进化 人类战胜了猛犸象,因为我们的祖先选择了给大脑增加神经元,而不是为骨骼增加肌肉. 人类战胜了大猩猩,因为我们看到五边形,能想到五角大楼或克莱斯勒的面包车. 人类战胜了大自然,因为我们不但有“蜥蜴脑”“家猫脑”,还有像果子冻一样滑溜

debugging books

https://blogs.msdn.microsoft.com/debuggingtoolbox/2007/06/08/recommended-books-how-to-acquire-or-improve-debugging-skills/ This article is my answer for this comment. First of all, this is just my opinion, not Microsoft’s opinion. Before talking abou

微软职位内部推荐-SDE2 (Windows driver)

微软近期Open的职位: SDE2 (Windows driver) Job title: Software Development Engineer 2 Location: Shanghai, China Do you want to join Microsoft and work on the latest Windows devices? Do you want to impact hundreds of millions of Windows customers together wit

微软职位内部推荐-SDE2 (Windows - Audio)

微软近期Open的职位: SDE2 (Windows - Audio) Windows Partner Enablement team in Operating System Group is looking for a Software Development Engineer (SDE) in Shanghai to enable components for Windows mobile devices on Intel platform. As the SDE, you will hav

iOS随笔-Xcode使用-文档翻译

本文是个人翻译记录~并不是技术分享~有想看中文文档的,可以阅览一下~ About Debugging with Xcode 关于Xcode调节器 寻找和消除代码中的问题是开发过程中的一个关键部分.Xcode调试器预置的通用调试有用的功能,你的应用程序启动时自动运行.调试器可以帮助您: 1.确定和定位问题2.检查运行代码的控制流和数据结构,以查找原因3.制定一个解决方案,并编辑相应的代码4.运行修改后的应用程序,并确认该修补程序 你应该熟悉应用程序设计和编程的概念.与一些熟悉Xcode也推荐:看到

微软职位内部推荐-SDE2 (Windows - Power)

微软近期Open的职位: SDE2 (Windows - Power) Windows Partner Enablement team in Operating System Group is looking for a Software Development Engineer (SDE) in Shanghai to enable components for Windows mobile devices on Intel platform. As the SDE, you will hav

make menuconfig简介

Y--将该功能编译进内核  N--不将该功能编译进内核 M--将该功能编译成可以在需要时动态插入到内核中的模块  如果你是使用的是 make xconfig,那使用鼠标就可以选择对应的选项.这里使用的是 make  menuconfig,所以需要使用空格键进行选取.在每一个选项前都有一个括号, 有的是中括号有的是尖括号,还有圆括号.用空格键选择时可以发现,中括号里要么是空,要么是"*": 而尖括号里可以是空,"*"表示编译到内核里:"M"表示编译

系统级性能分析工具 — Perf

离2.6.31内核开始.linux核心配备了性能分析工具perf,它可以是功能级和指令级热外表. perf Performance analysis tools for Linux. Performance counters for Linux are a new kernel-based subsystem that provide a framework for all things performance analysis. It covers hardware level (CPU/PM

Posts Tagged ‘This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register问题的解决办法

HowTo Install redhat package with YUM command without RHN February 26, 2014 in Redhat / Linux Tips and TricksTags: build local repository, build redhat local repository, HowTo Install redhat package with YUM command without RHN, This system is not re