其他分享
首页 > 其他分享> > Debug调试与分析

Debug调试与分析

作者:互联网

程序调试

程序调试是将编制的程序投入实际运行之前,用手工或编译程序等方法进行测试,修正【错误语法或者逻辑错误】的过程。运行了发现结果有一定的错误或者不符合预期结果,可以进行调试。
语法错误:编写的pytho语法不正确,程序编译失败。
逻辑错误:代码本身能够正常执行,但是执行完成的结果不符合预期结果。(一般是开发写出来的bug)

调试的分类

1. 语法错误:类型错误,语法错误,缩进错误,索引错误,键错误。
2. 逻辑错误:业务逻辑错误,并不会报错。

程序调试实战:

作用代码:

# 数字转换为大写人民币
import sys
import io
 
 
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
numberList = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
integralUnit = ['元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟']
fractionUnit = ['角', '分']
def solveF(f, res):
    # print(res)
    if int(f) == 0:
        res.append("整")
    else:
        for i in range(len(f)):
            if int(f[i]) != 0:
                res.append(numberList[int(f[i])])
                res.append(fractionUnit[int(i)])
    return res
while True:
    try:
        a = input()
        if '.' in a:
            a = a.split('.')
        else:
            a = (a + '.00').split('.')
        y = a[0]
        f = a[1]
        res = ['人民币']
        y = y[::-1]  # 反过来
        for i in range(len(y))[::-1]:  # 从i=len(y)-1开始,一直到0
            if int(y[i]) == 0:
                res.append(numberList[0])
            else:
                res.append(numberList[int(y[i])])
                res.append(integralUnit[i])
        res = solveF(f, res)
 
 
        res = ''.join(res)
        while ('零零' in res):
            res = res.replace('零零', '零')
        res = res.replace('壹拾', '拾')
        res = res.replace('人民币零', '人民币')
        print(res)
    except:
        break

 一、打断点

 一个断点标记了一个代码行,当Pycharm运行到该行代码时会将程序暂时挂起。
  注意断点会将对应的代码行标记为红色,取消断点的操作也很简单,在同样位置再次单击即可。 如图所示,打了三个断点:

当你将鼠标指针悬停在断点上方时,Pycharm会显示断点的关键信息,行号以及脚本属性,如果你希望更改该断点的属性,右击断点:

 二、代码调试

第一种:通过鼠标右击代码处,可以来debug程序:

第二种:可以通过点击pycharm右上角这个小虫子的图标来进行debug:

三、debug窗口几个图标分别代表的意思

这里一排七个坐标的意思分别是

1.show execution point (F10)

显示当前所有断点

2.step over(F8)

单步调试。若函数A内存在子函数a时,不会进入子函数a内执行单步调试,而是把子函数a当作一个整体,一步执行

3.step into(F7) 单步调试。

若函数A内存在子函数a时,会进入子函数a内执行单步调试。

4.step into my code(Alt + Shift +F7)

执行下一行但忽略libraries(导入库的语句)

5.force step into(Alt + Shift +F7)

执行下一行忽略lib和构造对象等

6.step out(Shift+F8)

当目前执行在子函数a中时,选择该调试操作可以直接跳出子函数a,而不用继续执行子函数a中的剩余代码。并返回上一层函数。

7.run to cursor(Alt +F9)

直接跳到下一个断点,然后接着来看变量查看器

 

注意:
在调试过程中观察变量的状态。我们需要对其设置一个查看器。在Watches窗口中,单击加号,输入期望查看的变量名称,例如这里输入delay,然后回车。我试了三个变量,这里我们看到这三个变量目前都是没被定义的,我们可以在控制台里给它定义,也可以通过执行下一步,利用代码中的赋值来定义。

四、控制台窗口

如果要是忘记中文意思的话,没有关系,鼠标指到按钮处,悬浮一会儿,会有英文提示的。

Debug按钮的使用

对Debug按钮的整体介绍:(后面会逐一详解)

按钮说明
(Alt + F10):如果处于其他代码行或页面,点击这个按钮可回到此时Debug正在执行的代码行
(F8):步过,代码逐行向下执行,如果这一行上有方法则自动执行方法不会进入方法内部
image-20210409161745556 (F7):步入,如果当前行有方法,可以进入方法内部;一般用于进入自定义方法内,不会进入官方类库的方法体
(Alt + Shift + F7):强制步入,能进入任何方法体,包括自定义方法和类库方法
(Shift + F8):步出,自动执行完此方法体内的剩余代码并从方法体内部退出到方法调用处的下一代码行,表示此方法已执行完
(无快捷键) 回退断点,退出方法体至方法调用处,此方法不会执行完,可以再次进入此方法
(Alt + F9):运行到光标处,无需打断点,将光标定在某一代码行,点击此按钮直接执行到此代码行
(Alt + F8):计算表达式,可以解析指定的表达式(语句),并执行此表达式

参考链接:JAVA调试

 

标签:分析,res,代码,子函数,Debug,执行,断点,调试
来源: https://www.cnblogs.com/jiajunling/p/16462354.html