1 guotie 2012-07-18 17:38:21 +08:00 gdb |
![]() | 2 jamiesun 2012-07-24 20:40:22 +08:00 print |
![]() | 3 yelusiku 2012-07-24 22:05:53 +08:00 楼主的博客要密码? |
4 sampeng 2012-07-24 22:46:05 +08:00 print解决99%的问题。debug日志位来解决运行时的潜在bug。。 |
6 sampeng 2012-07-24 22:46:49 +08:00 ![]() 楼主丢个要密码的博客。。让我们情何以堪。。。 |
![]() | 7 xuwenhao 2012-07-24 22:57:32 +08:00 基本不调试,靠test case和log解决问题 |
![]() | 9 loading 2012-07-25 09:33:50 +08:00 print |
![]() | 10 soulhacker 2012-07-25 10:53:20 +08:00 调试重于开发是个什么理论呀…… |
11 aa88kk 2012-07-25 12:00:24 +08:00 很多年前国内有这么一说,程序是调试出来的。因为那时候软件开发还很落后,基本没有写测试用例的习惯,所以调试要比现在重要。看过一篇国外的一篇技术文章,作者采访了几位知名的技术大牛,发现他们找错通常也是print先。 |
![]() | 12 wangkangluo1 OP @sampeng 由于涉及到sony内部一些资料,暂时只能加密,有时间修改后再放出 |
![]() | 13 wangkangluo1 OP @guotie 项目一大 ,性能要求高,gdb就派不上用场了 |
![]() | 14 wangkangluo1 OP @jamiesun 你都不知道逻辑,原始代码都没有printf输出,如何加printf? |
![]() | 15 fly2never 2012-07-25 17:07:24 +08:00 @wangkangluo1 那就把链接删掉吧,每个看帖子的人点击一遍结果看不了,这不是浪费大家时间么 |
![]() | 16 bananaPig 2012-07-25 17:10:54 +08:00 幼稚 |
![]() | 17 xuwenhao 2012-07-26 12:02:06 +08:00 @fly2never 不太会调试,而且如果是分布式程序的话也没办法调试,现在唯一调试类的工作是用Profiler定位性能问题和Memory Leak,功能性问题没有什么调试的必要了 |
![]() | 18 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比较特殊,缺少一些流行高级语言的特性,比较痛苦。 尽可能的做到更严谨,减少不必要的调试。 |
![]() | 19 darklowly 2012-07-26 21:53:12 +08:00 @wangkangluo1 你都不知道逻辑,原始代码都没有printf输出,如何加printf?------>这种工作,在开发中,一般不会发生,有点类似于逆向的工作。 |
![]() | 20 darklowly 2012-07-26 22:00:57 +08:00 |
![]() | 21 myrual 2012-07-27 10:00:45 +08:00 直白的说,这仅仅表明设计和实现能力很差。 以我过去10年与单片机和各种嵌入式设备打交道的经验来说,最忌讳写1000行代码,然后写到设备上看效果,发现有问题再debug。 合理的方案是多次迭代,写50行代码,验证一下,再50行,再验证。 随着越来越多的代码得到验证,对于进度的预期也越来越准确。 |
![]() | 22 dreampuf 2012-07-27 11:10:45 +08:00 1. 单步调试没法复用,不保值 2. 单步调试比设置Log的要求更低,更容易发生在不理解的情况下的修改 3. 非本机错误,很难(带价很高)调试 |
![]() | 23 uniy 2012-07-27 12:29:46 +08:00 调试真的很重要 |