我们摆在办公室的7台 linux 机器都是没有装 Xwin 的, windows 上的 xwin 实现
又没有几个好用的.
直接用 gdb, 嗯, 我的记忆力太差, gdb 有太多要记得命令, 帮助系统又差, 还是
算了.
所以, 如果程序要调试, 要么我就reboot 我的机器, 进入 linux/kde, 要么我就
用 windows 调试器去调试那些没有平台问题的代码.
我现在处理的代码是, 给一堆要查找的字符串, 然后编译成内存中的树结构(其实
是状态机啦), 之后碰到输入, 就沿着这个状态机走, 就可以查出输入是否匹配要
查找的字符串了. 这个做法是多关键字查找的标准做法, 这种做法不用计算hash
值, 不用输入和候选字串逐个对比字符, 所有字符处理一次即可, 正则表达式中的
DFA 就是类似的东西.
本来想用 grep 里面的代码的, 结果发现它功能太多, 从而考虑得太多, 因此速度
不够快. 我的代码的速度大致是它的三倍 --> 我还没有开始数据结构级别的优化,
反正可以满足目前的要求了, 优化的事情以后再说了.
我的数据结构还用了最简单的, 如果用更复杂的, 我会更依赖调试器而不是 log 了.
pi1ot 写道:
> 写了这么多年代码还真没用过几次gdb,log(...) 走天下,hiahia.
>
呵呵,以前我不能理解linus为什么反对加入kernel的调试器,kdb,
kgdb,whatever...
但,前一段时间,我修改anaconda(RH系Linux的系统安装程序)时,
鉴于系统安装程序的特殊性,几乎很难使用调试器,我才发现不使用
调试器是有一定道理的。
这样会迫使你对程序进行全局思考,而不是通过调试器去找问题所在,
这也是linus曾经表述过的观点,他好像说过,通过调试器修改的
bug,很多情况压根就不是fix。
在 07-12-14,red...@gmail.com<red...@gmail.com> 写道:
--
新的理论从少数人的主张到一统天下,并不是因为这个理论说服了别人抛弃旧观点,而是因为一代人的逝去。
My blog: http://googollee.blog.163.com
我现在也很少用调试器。感觉调试器对单独的小程序比较好用,特别是验证算法和结构的时候。一旦涉及到模块调用,时序调用的时候,基本上就是靠log。
在 07-12-14,pi1ot<pilo...@gmail.com> 写道:
在 07-12-14,Googol Lee<goog...@gmail.com> 写道:
在 07-12-14,Jian Wang<oxygen.j...@gmail.com> 写道:
http://www.maxim-ic.com.cn/products/microcontrollers/8051/development_tools/
lijie 写道:
> 说错了,是union
>
我当年能把程序跑到注释里的,就是国产青云系列的,开发环境也是国产的。
2007/12/14, red...@gmail.com <red...@gmail.com>:
在 07-12-14,red...@gmail.com<red...@gmail.com> 写道:
>
而且我觉得奇怪的是, 过程式语言的使用者, 从来没有抱怨过他们的语言和关系数
据库的集合操作语言之间有什么难配合的东西, 但是各种 OO 语言的用户, 多少年
来都觉得关系数据库使得他们非常不爽, ORM 层也是, 怎么也搞不顺当.
看来 OO 和恐龙差不多, 越适应某种环境, 就越不适应另外一种环境. 过程式语言
就和小强差不多, 当不了霸主, 但是到什么地方都死不了.
Jian Wang 写道:
并且, 如果只是用调试器调试程序, 不少的人只是简单给几个样例, 单步过了就算了.
没有调试器的时候, 看log, 如果是碰到相对复杂的bug, 那必须对自己的程序的整
体逻辑很清楚, 才能从这些 log 分析出问题的原因.
"通过调试器修改的 bug 不是 fix" 是不是指那种不够负责任, 没有找出问题的真
正根源, 而是看到某个地方修改一下(补丁一下), 就可以正常, 然后就不追究的做法 ?
NZzi 写道:
vi 的正则, 替换等命令, 我和之前的知识关系很大, 所以我记住了, 但是它的垂
直块选择之类的命令, 就记不住. 虽然这个功能,也很常用, 搞到现在, vi 只是我
程序写好了, 最后简单修改的时候才用, 平时用 ultraedit --> 不是说ultraedit
的块选择命令更有逻辑好记, 而是一选 column 菜单就可以看到.
王宁 写道:
> gdb记住十个左右常用的命令效率就比log高多了。不过有些时候还是log来得快。
恩,差不多是这个意思,我上次写的话有些不通顺,不好意思。
linus用咱们的话说,其实挺象一个愤青,但是一个很牛的愤青,是一个大guru,
他说的很多话挺“激进”的,但大多数是话糙理不糙。
正象你所说,在一些情况下,调试器是有用的,现在andrew不也把调试器加到他的
tree里
了吗?但是,在解决bug方面,调试器不应作为主要手段。
Atry 写道: