断点是在特定点暂停程序执行的 特殊标记 。进行断点调试可以实时的调试和错误排查程序,同时我们也可以来学习分析代码的具体行为。
先写一个简单的程序来测试一下 代码贴在下面
def mul(num1,num2):
return num1 * num2
for num in range(1,3):
res = mul(num,num+1)
print(res)
这段代码定义了一个函数 mul,该函数接受两个参数 num1 和 num2,并返回它们的乘积 num1 * num2。 然后,代码使用 for 循环迭代 range(1, 3),这个范围生成了从1到2的整数序列当然不包括3的 当然我们正常运行快捷键( shift+F10 )这段代码是返回的是 我们先进行断点一下,点击代码的行号出现 红色的点 ,此时的断点就打好了。 接下开始调试程序,快捷键( shift+F9 )部分笔记本F9需要按下Fn进行选取,也可以点击可见下图的 绿色的小蜘蛛 。
第一栏内最为重要主要是控制调试代码的走向。 左边为记录程序运行时的方法调用堆栈信息,堆栈信息可以像蓝色框一样显示方法的调用轨迹。每次调用一个方法时,堆栈的顶部会添加一个新的帧(类似于一行记录)。当方法执行完成后,对应的帧会以后进先出的方式从堆栈中移除。具体的解释将在文章的后面提供,这里可以不用过多关注。 右边为主要的变量信息。
原本的Pycharm中的语言为英文,这也毕竟还是不太友好,可以将语言换成中文好理解下。 打开pycharm左上角的file(文件) > 选择settings(设置) > 打开plugins(插件) > 搜索chinese(中文插件),下载好后重启pycharm。
安装中文插件后,当我们悬浮到相应的按钮上会提示我们功能,下面以安装中文语言包插件的基础上说明下。 以下为PyCharm 2024.1.4 (Community Edition)为例,不同版本可能布局有所不同 自左往右
重新运行 停止 恢复程序 暂停程序 步过:在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。在不存在子函数的情况下是和步入效果一样的。简单的就是,程序代码 越过子函数 ,但子函数会执行, 且不进入 。 步入:在单步执行时,遇到子函数就进入并且继续单步执行,有的会跳到源代码里面去执行。 单步执行我的代码:在单步执行时,遇到子函数就进入并且继续单步执行,不会进入到源码中。 步出:假如进入了一个函数体中,你看了两行代码,不想看了,跳出当前函数体内,返回到调用此函数的地方,即使用此功能即可。 查看断点 忽略断点