来来来 调试重于开发 摆摆大家常用的的调试技巧

2012-07-18 17:36:38 +08:00
 wangkangluo1
一直认为调试技术nb了 开发业自然就变得很顺畅
自己是做linux c/c++开发的 把一些用到的调试技巧什么的分享一下 望高手们跟帖指教
http://www.cnblogs.com/wangkangluo1/archive/2012/07/16/2593172.html
4799 次点击
所在节点    程序员
23 条回复
guotie
2012-07-18 17:38:21 +08:00
gdb
jamiesun
2012-07-24 20:40:22 +08:00
print
yelusiku
2012-07-24 22:05:53 +08:00
楼主的博客要密码?
sampeng
2012-07-24 22:46:05 +08:00
print解决99%的问题。debug日志位来解决运行时的潜在bug。。
sampeng
2012-07-24 22:46:32 +08:00
@guotie 原来也喜欢用gdb。。感觉太大了。。一个print就搓搓有余
sampeng
2012-07-24 22:46:49 +08:00
楼主丢个要密码的博客。。让我们情何以堪。。。
xuwenhao
2012-07-24 22:57:32 +08:00
基本不调试,靠test case和log解决问题
fly2never
2012-07-24 23:09:04 +08:00
@xuwenhao 佩服
loading
2012-07-25 09:33:50 +08:00
print
soulhacker
2012-07-25 10:53:20 +08:00
调试重于开发是个什么理论呀……
aa88kk
2012-07-25 12:00:24 +08:00
很多年前国内有这么一说,程序是调试出来的。因为那时候软件开发还很落后,基本没有写测试用例的习惯,所以调试要比现在重要。看过一篇国外的一篇技术文章,作者采访了几位知名的技术大牛,发现他们找错通常也是print先。
wangkangluo1
2012-07-25 15:52:05 +08:00
@sampeng 由于涉及到sony内部一些资料,暂时只能加密,有时间修改后再放出
wangkangluo1
2012-07-25 16:04:52 +08:00
@guotie 项目一大 ,性能要求高,gdb就派不上用场了
wangkangluo1
2012-07-25 16:05:30 +08:00
@jamiesun 你都不知道逻辑,原始代码都没有printf输出,如何加printf?
fly2never
2012-07-25 17:07:24 +08:00
@wangkangluo1 那就把链接删掉吧,每个看帖子的人点击一遍结果看不了,这不是浪费大家时间么
bananaPig
2012-07-25 17:10:54 +08:00
幼稚
xuwenhao
2012-07-26 12:02:06 +08:00
@fly2never 不太会调试,而且如果是分布式程序的话也没办法调试,现在唯一调试类的工作是用Profiler定位性能问题和Memory Leak,功能性问题没有什么调试的必要了
jamiesun
2012-07-26 21:13:05 +08:00
对于有异常处理支持的语言,尽可能的利用异常是比较好的,举个python的例子吧,比如string.index 找不到就抛异常,比如大多数时候字典 dict[key]就比dict.get(key)更有用,让异常更早的把问题暴露出来,而不是隐藏掉,使用断言 assert 这些远比GDB有用,gdb会造成强迫症,一点小小的东西就gdb。

print,logging,assert使用多了,你甚至直接猜到问题所在了。

c比较特殊,缺少一些流行高级语言的特性,比较痛苦。

尽可能的做到更严谨,减少不必要的调试。
darklowly
2012-07-26 21:53:12 +08:00
@wangkangluo1 你都不知道逻辑,原始代码都没有printf输出,如何加printf?------>这种工作,在开发中,一般不会发生,有点类似于逆向的工作。
darklowly
2012-07-26 22:00:57 +08:00
@aa88kk
@jamiesun
正解

好的coder可以在开发的时候直接避免很多bug,开发完以后一般只会出现少量的一些容易被忽略的bug,还有一个重点就是调试不能太多的提高代码质量, 还是在编码阶段,好好的编码才能提高。

一直都反对软件是调试出来的这一说法,个人感觉那是不负责任的程序员.或者是技艺不够的程序员或者是自我感觉良好,但是不是好的coder的人,堆出代码出问题了,找错的理由.代码出问题是正常的,出太多问题了,就不太正常了.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/42732

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX