|  |      1lichao      2013-08-20 17:34:58 +08:00  1 [想看看它每一步都是怎么执行的] ,Ruby 命令行下也可以啊,没 GUI 方便就是了 | 
|  |      2typing      2013-08-20 17:35:25 +08:00  1 log 有时候异步的东西, debugger会不能重现. | 
|  |      3sethverlo OP | 
|  |      4peizh2006      2013-08-20 17:50:46 +08:00  1 REPL+log | 
|  |      5luikore      2013-08-20 17:53:30 +08:00  1 代码中插一行 binding.pry, 想看什么都可以, 还能 edit-method 直接打开方法的源代码编辑 | 
|  |      6yuelang85      2013-08-20 17:55:42 +08:00  1 print | 
|      7bluntblade      2013-08-20 18:04:59 +08:00  1 printf + 二分法。 | 
|  |      8Livid MOD PRO  2 Sentry | 
|  |      10Mutoo      2013-08-20 18:28:07 +08:00  1 果断TDD吧 | 
|  |      11ipconfiger      2013-08-20 19:00:58 +08:00  1 import logging | 
|  |      12sethverlo OP @yuelang85  @bluntblade @ipconfiger print 或者 logging 也很麻烦,我说的场景是在你觉得这个代码的走向完全超出你的想象,想跟踪一下看看到底每一步走了哪里这样的。。。 | 
|  |      13jtacm      2013-08-20 21:41:54 +08:00  2 python八荣八耻: 以动手实践为荣 , 以只看不练为耻; 以打印日志为荣 , 以单步跟踪为耻; 以空格缩进为荣 , 以制表缩进为耻; 以单元测试为荣 , 以人工测试为耻; 以模块复用为荣 , 以复制粘贴为耻; 以多态应用为荣 , 以分支判断为耻; 以Pythonic为荣 , 以冗余拖沓为耻; 以总结分享为荣 , 以gui求其解为耻; | 
|  |      14davepkxxx      2013-08-20 21:43:05 +08:00  1 python可以打断点吗? | 
|  |      16shoumu      2013-08-20 22:01:43 +08:00  1 我用pycharm可以设置断点,其它的就不知道了 | 
|  |      17xunyu      2013-08-20 22:42:48 +08:00  1 pdb。。。 | 
|  |      19xunyu      2013-08-20 22:44:38 +08:00  1 | 
|      20cj1324      2013-08-20 22:57:11 +08:00  1 strace /lsof | 
|  |      21miaoever      2013-08-20 23:04:00 +08:00  1 | 
|  |      229hills      2013-08-21 00:15:31 +08:00  1 Python完全可以打断点debug,但实话说没啥大用 print和log是两码事,详细清晰的log不亚于任何debug方法 还有其他各种debug方法,比如留后门 | 
|  |      24luikore      2013-08-21 00:52:58 +08:00  1 开发环境查虫用 print, 线上产品查虫用 log... 不过 print/log 就能搞定的问题往往都是超简单的. 疑难问题还是 debug 和 repl 比较有效率, 这些往往都是上下文依赖关系比较强的地方, 看到第一步的结果你才会去想或者试探下一步, 一个交互能力比较强的环境比预设的日志省事多了. 顺便, 写测试你只多花一倍时间, 没写测试去查问题, 要多花十倍时间... | 
|  |      25thedevil5032      2013-08-21 07:12:11 +08:00 via iPad  1 以前 log(临时),最近 TDD(一劳永逸)。 测试的好处在于不仅可以保证现在你的代码正确性,以后的也可以保证。 | 
|  |      26sethverlo OP | 
|  |      27shierji      2013-08-21 08:10:59 +08:00  1 其实我想吐糟一下大家有没有注意旁边的推荐书目是百年孤独…… | 
|  |      28edgar      2013-08-21 08:22:17 +08:00  1 @sethverlo 通常log类的库,比如Ruby自带的logger,输出log时都有info,debug等不同的输出级别,然后通过调整输出等级(level)来控制,比如正式上线之后可以只输出info级别的log,所以一般都不需要特别的去删除代码中的输出log部分,同时也可以控制log是输出到标准输出还是文件。有时通过分析log可以看出出错的原因,比如记录在log中的异常、数据库操作没有正常执行等。 | 
|      30MayLava      2013-08-21 10:08:13 +08:00  1 一直是print…… 我也该学学更科学的debug方法了( ̄▽ ̄") | 
|  |      31fanzeyi      2013-08-21 11:25:36 +08:00  1 import pdb pdb.set_trace() 放在任何想 break 的地方。 | 
|      32lane128      2013-08-21 11:54:23 +08:00  1 多用用print 会发现很多有意思的问题 | 
|  |      33lycheng      2013-08-21 12:00:38 +08:00  1 from IPython import embed; embed()  之前别人告诉我这个东西,然后弄到代码去之后,就好像断点一样,能直接通过ipython 查看变量信息 | 
|  |      35luikore      2013-08-21 12:53:34 +08:00  1 @sethverlo print 是为了知道运行时发生了什么事情, 没法 print 才用 log, 不知道是否正常才看 log, 这是不得已而为之... 滥用 log 就是连锁反应: 搞 rolling, 压缩, 合并, 日志分析... 本来简单的事情都变得很复杂了. map-reduce 查出一个 bug 还不如当初写个测试... | 
|      36lixm      2013-08-21 16:25:31 +08:00  1 log | 
|  |      37qdcanyun      2013-08-21 16:37:35 +08:00  1 看代码 然后print 找不到log 还不行就pdb.... | 
|  |      38sun1991      2013-08-22 00:03:43 +08:00 via iPhone  1 推荐一下python tools for visual studio, 集成了强大的debug功能。支持visual studio shell,也就是说完全免费 | 
|  |      39davepkxxx      2013-08-22 00:06:15 +08:00  1 买个pycharm吧,支持debug。 | 
|  |      41yuelang85      2013-09-17 17:20:12 +08:00  1 @sethverlo 我有一次,程序抛异常,抛出的异常里面含中文,还是个编码错误的中文,于是异常处理代码异常了,所以,我找不到第一个异常的任何信息。 于是我在相关模块的相关代码里,每行都写了个print。。。。 一般情况下,如果代码是你写的,或者你非常熟悉这个代码,再诡异的问题都不会难住你。 如果是非熟悉代码,只要掌握些技巧,比如 @bluntblade 说的二分法,一般也难不到。 遇到问题了,单元测试(我是说测试代码)很有用,极大提高效率,如果说各种困难(比如需要线上环境)导致无法写单元测试,完全可以自己写些工具搞定。 | 
|  |      42guangwong      2013-09-18 01:48:24 +08:00  1 扯淡吧,任何語言不打斷點調試,都會蛋疼。 |