Pycharm debug 怎样使用Pycharm调试代码

735 阅读3分钟

github.com/ArthurAnand…

给定从1到n的n个自然数,要进行一个字典顺序的排序。从这排序里面找到第k个自然数。

目的:快速定位到代码出错的那一行。

如果我们想看清楚某一步发生哪些变化的话,就可以让程序在这一步停下来。

比如我在49行左侧打个红色断点,那么程序在48行那里会结束,不会运行到49行。

看接下来的一行代码是怎么运行的 step over,按照程序运行的顺序,逐行运行。

在48行时调用了一个函数。我想看在这个函数里具体发生了哪些事情,这个函数里,每个语句是怎样执行的呢?我们就点击step into,就会跳转到当前这一行调用的函数里面。

进入函数的代码块之后,再使用step over,就可以看函数里面的代码具体是怎么运行的。

当显示跳转到48行时,此行代码并没有被执行,变量依旧是之前的值。

image.png

继续step over以后,刚才选中的代码行才会执行。

image.png

step into进入函数的代码块之后,在里面又遇见函数,我们继续step into进入函数。

当我们想从最内部的函数跳出到外面层的函数,我们点击step out,就是从里面的函数体跳出到外面的函数体。跳出的这个过程,其实就相当于把之前调用的函数给完整运行了一遍。

还有一个按键,step into My Code。和step into的区别在于:

当我运行到的这个函数是我当前这个代码文件里定义的,使用step into My Code会调入当前这个函数。

但是如果我运行的这个函数不是当前这个代码文件里定义的,比如说从其他的包里导入的函数,

step into My Code不会跳入那个函数。

而step into,只要这一行代码发生了函数调用,不管这个函数是当前这个代码文件里定义的还是其他包里import导入的,都会跳转进去。

如果只想检查在当前的代码文件里,写的函数有没有问题,就可以点击step into My Code。

Run to Cursor的作用。即使目前dubug显示在49行,但当我把鼠标光标放在47行,

image.png dubug会直接运行接下来的步骤,直到光标这个位置才会停止。

image.png

使用最多的还是step over,当我设置一个断点之后,进行debug,在断点这一行,代码运行暂停。

然后点击step over之后,就会从断点这一行进行一个逐行的运行,每一行的结果,还有内存里的变量发生的变化,pycharm里都会进行一个展示,给我们调试带来帮助。

image.png