不要想,而要看--调试九法之三

今天调试一个共享数据区 的错误,这个数据共享区相当于一个日记本,日记本的顶栏是 日期、页码等信息,日记本内容的每一行是一条记录。日记每次只写一行,但是记录第一行的时候,要填写顶栏的信息。

现在发现每页日记的内容(记录) 是正确的,但是顶栏的信息不正确。

一开始我猜测 可能是由于并发引起的--多个进程同时抢占 日记本第一页,造成更新的顶栏信息都是第一页的顶栏信息----尽管这个猜测并不合理,为此浪费了半个下午的时间。

半个下午过去了,根据猜测,我更改了可能造成争用 顶栏 的地方,最后错误并没有消失。

最后,我决定观察错误是怎样发生的,通过gdb 跟踪程序运行流程,最后发现,

其实是更新顶栏的时候,我的一个变量写错了,这个表现始终指向第一页的顶栏。。。。


所以,不要想,而要看,通过各种途径观察错误是怎样发生的,避免不必要的猜测(其实猜测-更改-验证--在猜测--在更改  很浪费时间、精力)

猜你喜欢

转载自blog.csdn.net/sunweiliang/article/details/80399784