您的位置:

用Pycharm单步调试编程的技巧

1、引言

在编程过程中,调试作为一个不可或缺的步骤,帮助我们更高效地检查和发现代码中的错误。借助Pycharm,我们不仅可以使用传统的print()来输出调试信息,还能更加轻松地使用「单步调试」来逐步分析程序执行过程,进一步检查错误。因此,本篇文章将会介绍如何在Pycharm中使用单步调试技巧,以提高程序调试的效率。

2、正文

1、设置断点

在我们运用Pycharm调试程序之前,首先要做的就是在需要调试的代码行处设置断点,即在需要暂停程序执行的位置下断点。我们可以通过两种操作方式来设置断点:

(1)在需要设置断点的代码行左侧单击鼠标左键,设置一个红色圆圈表示断点;

(2)在需要设置断点的代码行处,使用快捷键Ctrl+F8(Windows系统)或Command+F8(Mac系统)来设置一个断点。

下面的示例代码中,我们使用快捷键Ctrl+F8在第4行设置了一个断点:

def main():
    lst = [1, 2, 3, 4, 5]
    for i in lst: # 在此行设置断点
        print(i)
    print('End')

if __name__ == '__main__':
    main()

2、使用单步调试

一旦我们在需要调试的代码行处设置了断点,我们就可以启动Pycharm的单步调试模式来检查程序运行过程中的错误。在Pycharm中,单步调试包括以下三种模式:

(1)Step over:执行当前行,并跳过函数内的代码;

(2)Step into:执行当前行,并进入函数内部的第一行代码;

(3)Step out:程序退出当前函数,并到达调用当前函数的下一行代码,通常用于跳出递归函数的执行。

可以通过以下方式启动Pycharm的单步调试模式:

(1)在需要调试的代码行上单击右键,选择「Debug '文件名.py'」选项;

(2)在Pycharm主界面的菜单栏中点击「Run」-「Debug」-「Debug '文件名.py'」选项,或使用快捷键Ctrl+Shift+D(Windows系统)或Command+Shift+D(Mac系统)启动调试模式。

在单步调试模式的命令面板中,我们可以看到以下四个按钮:

(1)Resume Program:调试模式下恢复程序正常运行;

(2)Step Over:单步跳过当前行(函数不跳);

(3)Step Into:单步进入当前行所调用的函数;

(4)Step Out:跳出当前函数,执行调用该函数的下一条代码。

下面的示例代码中,我们使用「Step Over」、「Step Into」和「Step Out」三种模式来演示单步调试的过程:

def foo():
    print("Step into foo")
    return 1

def main():
    a = 1 + 2
    b = a + foo() # 在此行设置断点
    print(b)

if __name__ == '__main__':
    main()

当我们在第7行处设置断点并执行单步调试时,程序会在第7行暂停,然后我们可以使用「Step Over」单步跳过当前行;使用「Step Into」单步进入函数foo()中的第一行代码;使用「Step Out」跳出函数foo(),执行调用foo()的下一条代码。

3、使用变量监视器

Pycharm还提供了一个非常有用的工具,名为「变量监视器」,可以在调试时实时查看程序中各个变量的值。通过打开「Watch」窗口,我们可以添加需要监视的变量名,每次程序执行到一个断点时,「Watch」窗口会显示该变量的值,从而帮助我们更好地理解程序的行为。

在Pycharm中,我们可以通过点击下方的三个窗口之一的「Variables」打开「Watch」窗口,然后单击右下角的「+」号来添加我们需要监视的变量名。在添加完变量名后,我们可以一步一步执行程序,观察变量的值的变化情况。下面是一个示例代码,在代码的某行设置了断点,同时在「Watch」窗口添加了变量a和lst:

def main():
    lst = [1, 2, 3, 4, 5]
    a = 0
    for i in lst: # 在此行设置断点
        a += i
    print(a)

if __name__ == '__main__':
    main()

4、使用断言

在程序开发中,我们经常需要使用断言来检查程序执行的正确性。Pycharm中的「 断言 」功能可以让我们更快捷地进行代码验证。使用「断言」功能时,我们可以在代码中使用assert语句来判断是否满足特定条件,并在满足特定条件时继续程序运行,不满足特定条件时则提示错误信息并停止程序的执行。

我们可以在Pycharm中的设置中开启「断言」功能,并设置断言失败时的行为:停止程序运行(默认行为)或运行Python控制台。使用断言需要注意的是,在完成调试后,需要在项目中将相关代码的assert语句删除;

下面的示例代码中,我们在程序的第15行处添加了一个断言,判断lst中元素是否均为偶数:

def main():
    lst = [2, 4, 6, 8, 9] # 在此处添加断言
    for i in lst:
        print(i)

    assert all([i%2 == 0 for i in lst])

if __name__ == '__main__':
    main()

3、小结

本篇文章重点介绍了如何在Pycharm中使用单步调试工具,让开发者以更高效的方式进行程序的调试和检测。通过本篇文章,我们了解了「设置断点」、「单步调试」、「变量监视器」和「断言」等工具的使用方法,希望对读者有所帮助。