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

  • 相关阅读:
    快速排序(java语言实现)
    生产环境_移动目标轨迹压缩应用和算法处理-Douglas-Peucker轨迹压缩算法
    十七、k8s-helm-初探
    【PHPWord】PHPWord 根据word模板生成的内容动态生成目录以及页码更新(完整示例源码)
    2023各版本JDK下载链接
    GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(二)
    用visa进行仪表通信
    软件测试 app自动化02 Appium常用的元素定位工具 元素的属性 元素定位方法
    PyCharm+PyQT5之二第一个QT程序
    Cisco Firepower 9300 Series FTD Software 7.2.0 & ASA Software 9.18.1
  • 原文地址:https://blog.csdn.net/qq_43369406/article/details/127642308