V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
coldear
V2EX  ›  问与答

sublime text 2 写python的同学,你们是怎么调试代码的?

  •  
  •   coldear · 2012-07-22 12:39:51 +08:00 · 18119 次点击
    这是一个创建于 4304 天前的主题,其中的信息可能已经有所发展或是发生改变。
    18 条回复    1970-01-01 08:00:00 +08:00
    armoni
        1
    armoni  
       2012-07-22 12:45:48 +08:00
    logger.
    coldear
        2
    coldear  
    OP
       2012-07-22 12:47:20 +08:00
    @armonl 大对象怎么办?
    saharabear
        3
    saharabear  
       2012-07-22 12:48:23 +08:00
    基本上只用logger和print,不太明白 大对象有什么问题。把方法抽出来写unittest就容易多了。
    coldear
        4
    coldear  
    OP
       2012-07-22 12:51:59 +08:00
    @saharabear 觉得大对象要print的量比较多,每次都这样的话比较麻烦
    saharabear
        5
    saharabear  
       2012-07-22 12:53:34 +08:00
    @coldear 不太明白大对象的含义,能用代码说明一下吗?
    coldear
        6
    coldear  
    OP
       2012-07-22 12:55:51 +08:00
    假设一个类有很多字段,在不同的地方要查看这些字段
    saharabear
        7
    saharabear  
       2012-07-22 12:58:20 +08:00   ❤️ 1
    @coldear 你是说字段需要设置一定的约束?那就写在对象的__getitem__和__set..里面,设置好约束条件,针对这个对象的这两个方法写好单元测试,如果对于set和get的数据不符合约束,就自动抛出异常。这样就不太需要关心里面的字段值了吧?(不知道我的理解对不对)
    coldear
        8
    coldear  
    OP
       2012-07-22 13:03:57 +08:00
    @saharabear 可能我的想法太受vs影响了,写代码的过程中经常使用一些debugger的功能
    比如断点查看对象等
    demon386
        9
    demon386  
       2012-07-22 13:14:48 +08:00
    基本没啥调试。。。
    adieu
        10
    adieu  
       2012-07-22 13:28:55 +08:00   ❤️ 1
    sublime text 2 更加适合当作编辑器来用,而不是IDE。可以直接在terminal下面运行你正在编写的程序,然后参考这篇 http://aymanh.com/python-debugging-techniques 里面的方法进行调试。
    iiduce
        11
    iiduce  
       2012-07-22 13:31:33 +08:00   ❤️ 1
    调试代码还是用 pycharm吧
    coldear
        12
    coldear  
    OP
       2012-07-22 13:38:21 +08:00
    @adieu 多谢
    @iiduce 多谢,正在看pycharm
    chloerei
        13
    chloerei  
       2012-07-22 13:46:00 +08:00   ❤️ 1
    unit test
    chairo
        14
    chairo  
       2012-07-22 14:02:09 +08:00   ❤️ 1
    Python的debugger可以用
    import pdb
    pdb.set_trace()
    armoni
        15
    armoni  
       2012-07-22 15:53:50 +08:00   ❤️ 1
    我比较习惯控制一个函数里代码行数,这样出错了,根据log很容易定位
    neildd
        16
    neildd  
       2012-07-23 09:14:29 +08:00   ❤️ 1
    我写python调试无非3种
    1.单个变量print
    2.list、dict等用pprint
    3.逻辑调试用pdb.set_trace()
    ipconfiger
        17
    ipconfiger  
       2012-07-23 09:23:41 +08:00   ❤️ 1
    看来LZ深受OOP的流毒。你一开始弄那么大个架子,又不预先考虑测试的问题,自然头大。先从小处入手,把功能分解成容易写容易测试的小模块,每个都好测试,然后在再组装起来,每一个小模块都是正确的,组装起来的成品就不容易出问题
    coldear
        18
    coldear  
    OP
       2012-07-23 13:34:36 +08:00
    @chairo @neildd 多谢,看来要多用pdb.set_trace()和pprint.
    @chloerei @armoni @ipconfiger 看来要先考虑测试,把代码重新组织一下,多谢了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2443 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 12:29 · PVG 20:29 · LAX 05:29 · JFK 08:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.