可能是最强大的Python debug工具包!

安利一下自制debug工具:SuperDebug,尤其适合从事机器学习、数据科学的程序猿们

GitHub链接:觉得好用就给个⭐️吧~

https://github.com/Azure-Vision/SuperDebug​github.com/Azure-Vision/SuperDebug

习惯使用print(var)打印debug?没问题,现在你只需要换成debug(var)即可,学习成本几乎为0,但是功能却远比print强大。

准备工作:在需要debug的工程目录下添加debug.py(需要从GitHub上下载),在其他文件中import:from debug import debug, mark

让我们看看这套工具都支持哪些功能吧:

功能1: debug(var)

用黄色字体打印(与普通的打印区分):

  • debug(var)所在位置,如"/path/to/file.py", line 666, in some_function(command / ctrl + 单击 即可跳转到文件中 debug(var)所在行,看看究竟是附近哪里有bug)
  • 数组形状(AI小白傻fufu不知道每个tensor长什么样?debug一下便知。仅限list、numpy的array、torch的tensor)
  • var的具体值

进阶功能:还不熟悉的同学可以先跳过 (需要更改debug.py中的开关)

  1. 一次性打印多个变量:debug(var1, var2, var3, ...)
  2. 同步输出在终端(PRINT = True)和同目录下的debug.log文件中(TO_FILE = True
  3. 对于一些循环程序,你或许只想打印有限次,只需设置 MAX_LOG = 想打印的次数 即可
  4. 如果你希望只打印变量的形状,而不打印变量的内容,可以使用debug(False, var)
  5. 打印完整矩阵内容,禁止pytorch、numpy自动省略:FULL = True
  6. 对于一些套娃的list / dict,可以控制详细打印至第几层,标准为0,建议用3: PEEK_LAYER = 0

功能2: mark(var)

运行了这么长时间。。。为什么程序还没有跑完?

不用慌,在代码的关键节点插入mark(),如果程序有运行到这个位置,就会用黄色字体打印出所在位置,如"/path/to/file.py", line 666, in some_function

在代码中,像“沿路洒下小石子”一样,插入多个mark(),你就知道程序是在哪里卡住啦~

进阶功能:

若过有输入具体变量mark(var),则会用黄色字体打印出 var 的值。(若仅用mark()而无输入,则打印mark()所在的位置)

功能3: 在出错时跳至ipdb调试界面,便捷debug

自动停在出错的那一步(需设置BUGGY = True):当出现Exception,程序不会退出,而是会暂停在出现Exception的那一步。

这时你可以使用var(输出var的值), up(上一步), down(下一步)等控制命令进行调试。更多命令同ipdb

功能4: 在指定位置停下(设置断点)

在想设置断点处写 raise Exception(),与功能3同理,程序将会停在exception处

发布者:Vision

朝闻道,夕死可矣

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 注销 /  更改 )

Google photo

您正在使用您的 Google 账号评论。 注销 /  更改 )

Twitter picture

您正在使用您的 Twitter 账号评论。 注销 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 注销 /  更改 )

Connecting to %s

%d 博主赞过: