Debugging is the process of finding and resolving of defects that prevent correct operation of comput
|
|
October 10 · Issue #6 · View online
Email digest of dylanninin
|
|
Debugging is the process of finding and resolving of defects that prevent correct operation of computer software or a system. – Wikipedia
|
|
|
你可以质疑我,但是不能质疑我的代码 -- 神秘的程序员们
一个程序员星人,无论他(她)用的是 Python 还是 Java;无论程序是运行在手机还是服务器端;无论写的是底层还是应用,只要你对他说出下面的话: 『你开发的这个程序 crash 了。』
他就会条件反射: 『这怎么可能!』 … …
|
GitHub - danluu/debugging-stories: A collection of debugging stories. PRs welcome :-)
Debugging stories are fun! This is a collection of links to various debugging stories.
|
Why don't schools teach debugging?
What I don’t understand is why schools don’t teach systematic debugging. It’s one of the most fundamental skills in engineering: start at the symptom of a problem and trace backwards to find the source. Why do we leave material out of classes and then fail students who can’t figure out that material for themselves? Why do we make the first couple years of an engineering major some kind of hazing ritual, instead of simply teaching people what they need to know to be good engineers? For all the high-level talk about how we need to plug the leaks in our STEM education pipeline, not only are we not plugging the holes, we’re proud of how fast the pipeline is leaking.
|
Effective Debugging
66 Specific Ways to Debug Software and Systems. All effective approaches for debugging your applications and systems summarized in a single book.
|
|
Linux Systems Performance - YouTube
This talk summarizes six important areas of Linux systems performance in 50 minutes:
- observability tools
- methodologies
- benchmarking
- profiling
- tracing
- tuning
And here’re much advice about what is and isn’t important to learn. – by @Brendan Gregg
|
Systems Performance Book
@Brendan Gregg‘s great book Systems Performance: Enterprise and the Cloud.
Systems performance analysis is an important skill for all computer users, whether you’re trying to understand why your laptop is slow, or optimizing the performance of a large-scale production environment. It is the study of both operating system (kernel) and application performance, but can also lead to more specialized performance topics, for specific languages or applications.
|
|
一个 Go 程序系统线程暴涨的问题
最近 fix 了一个 Go 程序系统线程数量暴增的问题,线程数量维持在2,3万个,有时候甚至更多,这情况明显不符合 Go 的并发原理。第一次发现线程数巨多是因为这个程序突然 crash 了,由于设置了程序可用的最大线程数,所以线程数一太多就会crash。 这个程序其实就是现在挺火热的 Swarm …
|
|
用 perf 和 SystemTap 跟踪 MongoDB 访问超时
事情的起因是我们为 LeanCloud 结构化存储后端搭建了一个实验性质的小集群,使用了 MongoDB 3.0 和 WiredTiger 引擎。该集群在平稳运行了几个月后的某一天突然开始出现大量不明原因的超时。 按常规套路,我首先怀疑到 io,但是检查 iostat、dstat 和 iotop 之后便排除了这一可能。况且我们给 MongoDB 用的是 Intel 企业级 SSD,也不太可能在这里出问题。 … 于是下意识地 strace 上去,发现这个线程只调用了一个 syscall:futex。所以,有什么东西是单线程处理并且还拿着锁……pstack 一下,只给了一个函数名 __evict_server。再没有更多的信息了。
|
|
Ostrich algorithm - Wikipedia, the free encyclopedia
In computer science, the ostrich algorithm is a strategy of ignoring potential problems on the basis that they may be exceedingly rare. It is named for the ostrich effect which is defined as “to stick one’s head in the sand and pretend there is no problem.” It is used when it is more cost-effective to allow the problem to occur than to attempt its prevention. Usage: if each PC deadlocks once per 10 years, the one reboot may be less painful than the restrictions needed to prevent it. Maybe it is one of greatest built-in algorithms of human beings, :)
|
|
How to Write Great Outage Post-Mortems - Artsy Engineering
A great outage postmortem should include following sections:
- Whose job is it
- Recipients
- Outage subject/summary
- What caused the outage
- How was the outage resolved
- The postmortem: what could have prevented the outage
- Outage history
- Don’t bury it
|
你的灯亮着吗:发现问题的真正所在 -- 豆瓣
温伯格的问题解决之书,虽然现在看来不够深刻,但仍然极有启发性。
初出茅庐的问题解决者总在还没定义好问题的时候就仓促地给出解决方案。迫于外界环境的压力,经验丰富的问题解决者有时也耐不住性子。在这种情况下,尽管他们能找到很多方法来解决问题,但是不一定对症。大家都想让自己的解决方案为大多数人所认可,每个人都指责别人固执己见,却从不承认对方提出的也可能是一种可行的方法。
也不是所有人都栽在忽视问题定义上,有些人恰恰输在试着定义问题的时候。他们在已有的定义上没完没了地绕圈子,生怕定义不准确,结果一直不敢推进到寻找解决方案的阶段。
在实际操作中,一方面,对日常生活中自然产生的问题,不可能给出独一无二、完全明确的定义;另一方面,如果不能就问题本身达成一定程度的共识,几乎可以肯定,最后找到的解决方案无法切中要害。这种时候,一般都是在为说话嗓门最大、口才最好或者资产最雄厚的人解决问题。 问题解决者的工作是为别人解决问题。对于想成为问题解决者的人来说,入门的关键在于把单一思维模式切换成多重思维模式,即从“能解决一个问题的人”到“能解决很多问题的人”,或者说“问题解决者”。 这是什么类型的问题?谁碰到了问题?问题是什么?或者说,此时此刻,问题的本质是什么? 当然,解决问题的过程、人员或者机构自身也可能成为问题。
|
Did you enjoy this issue?
|
|
|
|
If you don't want these updates anymore, please unsubscribe here.
If you were forwarded this newsletter and you like it, you can subscribe here.
|
|
|