• python debug


    目录如下:

    • x.1 大体思路
    • x.2 使用python解释器
    • x.3 *使用vscode的debug console

    x.1 大体思路

    python debug时具有以下操作

    第一,看报错,看报的是什么traceback错误,有的错误一眼就能看出来,就能改。而且要注意,离traceback越近的,是函数调用栈中最内层的,即错误最接近/里面的地方,如果他是在site-package里面,那往往是你在函数调用栈浅层函数的传参有错误,不可能是底层代码的错误。

    第二,若traceback是自己不熟悉的,则疯狂打断点找到报错的地方,这个报错的地方不应该是底层代码的地方,即应该是自己写的或者项目中的文件,看懂他的逻辑,传入正确的参数往往就能对。底层代码的逻辑是基本不可能会错误的。

    第三,在疯狂打断点找报错地方的时候,如果一看见调入底层代码,即site-package的库,就立马step-out跳出,因为你根本不需要去看懂底层代码的逻辑,它也往往不会有错,遇到底层代码/项目中的不认识的函数就直接浏览器搜索它的功能,这样更加快速。

    第四,善于使用print和vscode的搜索函数名功能搜索文件功能,时刻观察正确的代码运行到哪里了。

    x.2 使用python解释器

    在学习PyTorch的时候,有些函数的代码臃肿,理解起来很烦,这里介绍一种快速理解代码意思的方法。

    例如我们要理解下面这段代码

    # 已知predict_y和test_label都是tensor类型数据
    accuracy = (predict_y == test_label).sum().item() / test_label.size(0)
    
    • 1
    • 2

    我们新建一个脚本,创建两个tensor依次拆解步骤测试,尝试理解:

    # sum()测试
    a = torch.tensor([1, 2, 3])
    b = torch.tensor([1, 2, 4])
    c = (a == b).sum()
    print(c)
    
    # size(0)测试
    d = torch.randn(2, 3)
    print(d.size(0))
    e = d.size(0)
    print(e)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    先把简单的理解了,后面复杂的代码就理解了,这个方法挺好使。

    x.3 *使用vscode的debug console

    debug console在调试时,可以通过输入变量名来实时获取内存中的变量,还可以通过重新定义一个变量在内存开辟一块新空间,如下:

    在这里插入图片描述

    debug console通常是指开发人员在调试代码时使用的控制台。它通常提供了一个交互式的环境,可以让开发人员在运行时执行代码和查看变量值,以帮助诊断代码错误。

    在debug console中,你可以使用变量赋值操作符(如“=”)来赋值变量。这将创建一个变量并为其分配内存空间。但是,需要注意的是,在某些语言中,debug console中的变量可能只在当前作用域中可用,并且可能会被垃圾回收器回收。

    总的来说,debug console提供了一个强大的工具,可以帮助开发人员更有效地诊断和修复代码错误。

  • 相关阅读:
    计算机毕业设计ssm社区流浪动物救助系统2r32k系统+程序+源码+lw+远程部署
    Python爬虫教程之五大重要库入门使用教程Scrapy、Requests、Urllib、Beautiful Soup、Selenium(教程含源码)
    一文带你学透Java Servlet(建议收藏)
    常用巡检命令
    python+django+mysql校园网站毕业设计毕设开题报告
    ES6--Promise
    首个828 B2B企业节:华为携手生态伙伴,赋能中小企业数字化转型
    yolov7基础知识先导篇
    【mysql】2006 - Server has gone away
    Sentinel 流量控制框架
  • 原文地址:https://blog.csdn.net/qq_43369406/article/details/127642308