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