请问你们用脚本语言(Ruby/Python)写程序的时候碰到诡异的问题都怎么调试?

2013-08-20 17:33:38 +08:00
 sethverlo
大概就是,想了半天都不知道为什么会出现这样的情况,然后就想看看它每一步都是怎么执行的……

有没有对应的工具?
5190 次点击
所在节点    问与答
43 条回复
miaoever
2013-08-20 23:04:00 +08:00
9hills
2013-08-21 00:15:31 +08:00
Python完全可以打断点debug,但实话说没啥大用

print和log是两码事,详细清晰的log不亚于任何debug方法

还有其他各种debug方法,比如留后门
luikore
2013-08-21 00:39:43 +08:00
@sethverlo <% binding.pry %>
luikore
2013-08-21 00:52:58 +08:00
开发环境查虫用 print, 线上产品查虫用 log... 不过 print/log 就能搞定的问题往往都是超简单的.

疑难问题还是 debug 和 repl 比较有效率, 这些往往都是上下文依赖关系比较强的地方, 看到第一步的结果你才会去想或者试探下一步, 一个交互能力比较强的环境比预设的日志省事多了.

顺便, 写测试你只多花一倍时间, 没写测试去查问题, 要多花十倍时间...
thedevil5032
2013-08-21 07:12:11 +08:00
以前 log(临时),最近 TDD(一劳永逸)。

测试的好处在于不仅可以保证现在你的代码正确性,以后的也可以保证。
sethverlo
2013-08-21 07:26:50 +08:00
@9hills
@luikore

我的疑问是,使用 logging 的话,一个是需要一点一点自己添加,还有一个就是测试完毕以后要一点一点删除……不知道两位说的「详细清晰的log」还有「线上产品查虫用 log」是个什么情况?
shierji
2013-08-21 08:10:59 +08:00
其实我想吐糟一下大家有没有注意旁边的推荐书目是百年孤独……
edgar
2013-08-21 08:22:17 +08:00
@sethverlo 通常log类的库,比如Ruby自带的logger,输出log时都有info,debug等不同的输出级别,然后通过调整输出等级(level)来控制,比如正式上线之后可以只输出info级别的log,所以一般都不需要特别的去删除代码中的输出log部分,同时也可以控制log是输出到标准输出还是文件。有时通过分析log可以看出出错的原因,比如记录在log中的异常、数据库操作没有正常执行等。
sethverlo
2013-08-21 08:49:12 +08:00
@shierji 因为这是问与答。。
MayLava
2013-08-21 10:08:13 +08:00
一直是print……
我也该学学更科学的debug方法了( ̄▽ ̄")
fanzeyi
2013-08-21 11:25:36 +08:00
import pdb
pdb.set_trace()

放在任何想 break 的地方。
lane128
2013-08-21 11:54:23 +08:00
多用用print 会发现很多有意思的问题
lycheng
2013-08-21 12:00:38 +08:00
from IPython import embed; embed()

之前别人告诉我这个东西,然后弄到代码去之后,就好像断点一样,能直接通过ipython 查看变量信息
sethverlo
2013-08-21 12:03:09 +08:00
@lane128 比如?
luikore
2013-08-21 12:53:34 +08:00
@sethverlo print 是为了知道运行时发生了什么事情, 没法 print 才用 log, 不知道是否正常才看 log, 这是不得已而为之... 滥用 log 就是连锁反应: 搞 rolling, 压缩, 合并, 日志分析... 本来简单的事情都变得很复杂了.

map-reduce 查出一个 bug 还不如当初写个测试...
lixm
2013-08-21 16:25:31 +08:00
log
qdcanyun
2013-08-21 16:37:35 +08:00
看代码 然后print 找不到log 还不行就pdb....
sun1991
2013-08-22 00:03:43 +08:00
推荐一下python tools for visual studio, 集成了强大的debug功能。支持visual studio shell,也就是说完全免费
davepkxxx
2013-08-22 00:06:15 +08:00
买个pycharm吧,支持debug。
9hills
2013-09-17 15:09:54 +08:00
@sethverlo
logging level

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

https://tanronggui.xyz/t/79654

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

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

© 2021 V2EX