• 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提供了一个强大的工具,可以帮助开发人员更有效地诊断和修复代码错误。

  • 相关阅读:
    Spring注解驱动之后再说事务
    无人机照片贴地实现
    FlinkSQL CDC实现同步oracle数据到mysql
    基于html宠物用品商城项目的设计与实现(学生网页设计作业源码)
    电脑C盘爆红怎么办?(小白篇)
    求解答 sql 的行有条件复制数据
    CSS 模糊效果 CSS 黑白效果 CSS调整亮度 对比度 饱和度 模糊效果 黑白效果反转颜色
    k8s配置configmap指定到容器的指定文件
    Matlab实现Holland风场
    RK3399 Android10 移除应用权限(包含USB)申请弹框
  • 原文地址:https://blog.csdn.net/qq_43369406/article/details/127642308