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

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

有没有对应的工具?
5139 次点击
所在节点    问与答
43 条回复
lichao
2013-08-20 17:34:58 +08:00
[想看看它每一步都是怎么执行的] ,Ruby 命令行下也可以啊,没 GUI 方便就是了
typing
2013-08-20 17:35:25 +08:00
log

有时候异步的东西, debugger会不能重现.
sethverlo
2013-08-20 17:45:02 +08:00
@lichao 有时候没有那么简单,比如说发邮件什么的

@typing log 的话好麻烦…有时候想追踪的比较深的话就要写好多……
peizh2006
2013-08-20 17:50:46 +08:00
REPL+log
luikore
2013-08-20 17:53:30 +08:00
代码中插一行 binding.pry, 想看什么都可以, 还能 edit-method 直接打开方法的源代码编辑
yuelang85
2013-08-20 17:55:42 +08:00
print
bluntblade
2013-08-20 18:04:59 +08:00
printf + 二分法。
Livid
2013-08-20 18:15:57 +08:00
Sentry
sethverlo
2013-08-20 18:17:41 +08:00
@luikore 这几天发现 pry 非常好用,但是请问 .html.erb 这样的呢?
Mutoo
2013-08-20 18:28:07 +08:00
果断TDD吧
ipconfiger
2013-08-20 19:00:58 +08:00
import logging
sethverlo
2013-08-20 21:21:55 +08:00
@yuelang85
@bluntblade
@ipconfiger

print 或者 logging 也很麻烦,我说的场景是在你觉得这个代码的走向完全超出你的想象,想跟踪一下看看到底每一步走了哪里这样的。。。
jtacm
2013-08-20 21:41:54 +08:00
python八荣八耻:

以动手实践为荣 , 以只看不练为耻;
以打印日志为荣 , 以单步跟踪为耻;
以空格缩进为荣 , 以制表缩进为耻;
以单元测试为荣 , 以人工测试为耻;

以模块复用为荣 , 以复制粘贴为耻;
以多态应用为荣 , 以分支判断为耻;
以Pythonic为荣 , 以冗余拖沓为耻;
以总结分享为荣 , 以gui求其解为耻;
davepkxxx
2013-08-20 21:43:05 +08:00
python可以打断点吗?
sethverlo
2013-08-20 21:45:42 +08:00
@jtacm 说是这么说的,但是有的时候一点一点 print 还是很累啊
shoumu
2013-08-20 22:01:43 +08:00
我用pycharm可以设置断点,其它的就不知道了
xunyu
2013-08-20 22:42:48 +08:00
pdb。。。
xingzhi
2013-08-20 22:44:06 +08:00
@Livid Sentry 不是拿来收集信息么,可以实时调试?
xunyu
2013-08-20 22:44:38 +08:00
cj1324
2013-08-20 22:57:11 +08:00
strace /lsof

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

https://www.v2ex.com/t/79654

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

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

© 2021 V2EX