ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

python 如何断点调试

python 如何断点调试

在进行代码的时候, 使用断点来调试是一个特别重要的技巧, 它能够帮助程序员去快速找到程序里面的那些错误, 并且能够把错误给修好。

大家平常用来做断点调试的常见招数主要有这么几种吧, 一种是可以直接用那个叫做pdb的内建模块, 还有一种是用像Code这些集成开发环境去弄, 再有一个就是通过写一些print语句来做一下简单的排错工作。其中, 使用pdb模块是最基本的调试方法。开发者可以通过在代码里插入断点这种方式。

来一步一步地执行代码。检查变量的数值。追踪程序的整个过程是怎么样运行的。

pdb这个模块, 它是里的内置调试器, 它可以使得开发者, 在程序里面的任意位置, 去设定断点, 然后用一种交互的形式, 一步接一步地去执行代码, 在调试的这个过程当中, 开发者还能够去查看和修改变量的具体的值, 还可以去执行各种各样的其他命令, 从而能够对代码实际是如何运行的, 以及其中存在什么样的逻辑错误, 有一个非常深入的了解, 举个例子说明一下, 假设开发者在源码里面插入了一句pdb.()这样的代码, 那么在程序运行到这一行语句的时候, 就会立刻停下来, 并且自动进入到调试模式之中。

在这时候, 开发者是可以使用像n、c、l这样的命令来查看以及控制程序的执行过程, 其中n代表的是下一步, c代表的是继续执行直到下一个断点, l代表的是查看代码。

一、现在人们是使用名为PDB的那个模块, 来针对程序里的断点处进行调试这一件事情的。

这个叫做 pdb 的模块呢, 它是一个特别强大的用来调试代码的工具, 它能够让你作为一个开发人员去在代码里面设置上断点, 能够检查那个变量是什么情况, 还能够一步一步地去执行代码等等, 这些东西都是它能做的, 以下就是使用 pdb 来进行调试时候需要遵循的详细步骤。

1. 将断点进行设置的处理操作。

你可以在那个你需要进行调试的位置这里, 去插入一个 pdb.() , 也就是说, 当代码走到这一行的时候, 程序就会暂停下来, 并且进入调试模式。比如像下面这样的:

import pdb

def buggy_function(x, y):

result = x + y

pdb.set_trace() # 在此行设置断点

return result

print(buggy_function(3, 5))

当你去运行前面说的那串代码的时候, 程序这个地方会停住不走了, 具体就是在pdb括号里面写的那个东西所在的位置。

2. 这些是被大家频繁使用的那些指令。

在你进入了调试模式这样的状态之后, 是可以去使用下面所给出的这些命令的, 目的呢就是为了能够去查看程序的执行情况并且控制程序的执行, 这一点是明确的。

二、使用 IDE 进行调试

如今大多数现代集成开发环境工具, 比方说像Code这种软件, 它们都提供了那种特别强大的调试助手功能, 这些功能允许开发者用图形化的操作界面来设置断点, 还有观察程序里的变量, 以及控制代码执行的流程之类的各种操作。

1. 进行一些调试的操作。

在中进行调试这个事儿是非常简单的, 下边是基本步骤:

它还提供了观察变量的窗口、对表达式进行求值的功能, 以及设置条件断点这些比较高级的措施, 这样做是为了能让开发人员进行深入的代码分析工作。

2. Code 调试

在 VS Code 这个软件里边, 去调试代码这个动作, 也是被安排得非常非常方便的。

VS Code这个软件里的调试工具, 它可以让我们去管理断点这件事, 也可以让我们去监视变量的值是怎么个情况, 还可以把调用堆栈给查看清楚。

三、使用 Print 语句调试

虽然这方法谈不上最优雅, 可有时候拿print语句来调试代码, 倒也许是挺直接、也挺有效的做法的, 通过把关键地方的变量值以及程序走的路径给打印出来, 开发者就能快点把事情出问题的地方找着了。

1. 在代码里面增加上 Print 这种输出语句。

在你需要进行检查的那个地点, 把print这个语句给插进去。作为示例的话:

def calculate_sum(a, b):

print(f"Calculating sum of {a} and {b}")

result = a + b

print(f"Result is {result}")

return result

这个方法, 它特别地合适, 去进行快速的检查, 特别是在那些小型脚本里面出现逻辑问题的时候。

2. 注意事项

我们在使用print来调试的时候, 是需要格外注意的。

四、断点调试的高级技巧

当人们已经掌握了最基本的那些调试方法以后, 再去接触并了解一些更为高级的调试技巧, 这完全能够使得原本就存在的调试效率获得一个非常显著的提升作用, 从而达到让事情办得更快、更好的目的。

1. 条件断点

条件断点这个功能, 它允许程序在特定的条件得到满足的时候, 把执行过程给暂停下来。用户在开发工具里面去设置这种条件断点的时候, 是能够指定出了一个布尔类型的表达式来的, 只有在这个时候表达式的结果为真, 那个断点的动作才会被触发。

2. 日志断点

日志断点是种不需要让程序停下来就能记录信息的断点类型。它能够在不干扰程序正常执行的情况下面, 把调试信息给输出的。

3. 调试异常

在调试的过程里, 搞清楚异常被抛出来的那个上下文信息, 是特别重要的一件事情。如果使用集成开发工具里的异常断点这个功能的话, 那么程序一旦异常抛出, 它就会自动暂停下来不再往下运行了。

五、优化调试流程

为了让调试这件事能够搞得更高效一点, 开发人员可以用下面这些办法去做。

1. 进行有关这个任务的测验的编写。

开发者在代码发生变更的时候, 通过编写单元测试以及编写集成测试的方式, 可以对逻辑的正确性进行快速验证, 这样做的结果是减少了调试所花费的工作量。

2. 代码审查

代码审查这件事儿能够帮助大家把那些可能会有的问题给找出来,并且顺便给你提一些怎么样能变得更好的建议, 然后呢, 你可以通过跟你的同事一块儿去对那个代码进行审查这种合作方式, 好让那些问题在还没有跑到生产环境上去的时候, 就能被及时地发现并且把它们给修好。

3. 静态分析工具

要动用像是这样子的静态分析工具, 来对代码进行自动检查, 以便去发现里面那些潜藏着的麻烦, 比方说那种语法上面的差错, 还有那些表现出不好的写作习惯的方面, 等等一系列的情况。

4. 记录调试过程

在调试那个过程时候, 去把那些关键的调试试步骤还有发现的问题给记录下来, 这样对总结经验是有帮助的, 然后还可以为将来遇到类似的问题要去解决提供个参考的地方。

六、总结

断点调试这件事儿, 属于是开发者必须要掌握的一个特别重要的技能范畴里面的一员, 大家可不能够掉以轻心。你要学会怎么熟练地去使用那个什么pdb模块, 然后也要会用那些IDE调试工具对不对, 还有那个print语句也得好好的用起来这么一来, 开发者就可以高效率地把代码里头的各种问题给定位到并给解决掉了。

除此之外, 你还得去掌握一些稍微高级一点儿的技巧比如说条件断点这个, 然后日志断点这个, 再一个异常调试这个等等这些, 把这些东西呢再加上配合着测试这个东西来做, 还要配合着代码审查这种东西来做, 最后呢还要结合那个静态分析工具一起来用那么这样一来是可以大大的把那个调试的效率给提上去的并且那个代码的质量呢也会被提升很多的这是毫无疑问的事情嗯。

不管是刚开始学着做开发的初学者, 还是已经有很多年开发经验的老手, 如果都能够坚持把这些用来发现问题的办法一直学下去, 并且真的去用它们做事, 这种做法是会让软件开发整个过程的运行速度变得更快的。

大家经常问的问题, 还有这些问题的答案FAQ。

1. 您具体想在中设置断点呢?

在中间, 能够使用 pdb 这个模块来对断点进行设置。通过在源代码里面加入 pdb 以及 pdb 点调用这些操作, 程序会在相应的那一行停下来。这样的话, 人们就可以一段一段地执行代码, 并且去查看变量的情况是怎样的。

另外, 很多集成开发环境, 比如说 VS Code 这一类的工具, 也提供了可视化的界面, 以便大家轻松地设定断点, 使用者只需要用鼠标点击一下行号旁边的空白地方就可以完成了。

2. 很多人在使用集成开发环境的时候, 总会想要知道一个具体问题, 那就是在操作过程里应当去怎么借助相应的调试设备来完成断点这一部分的调整工作呢。

像那个名字叫做Code什么的现代集成开发环境, 它们提供的调试工具是挺强大的一种存在, 用户能够在那个代码行数的地方去设置断点这样一个东西, 然后在运行程序这个操作当中来选取调试模式这个方法, 程序就会在断点所在的位子停下来不去继续往下走, 然后用户就可以去查看变量的值到底是什么样子, 也可以去查看执行上下文的状态, 并且还可以一行接着一行地去把代码给执行完, 这样的做法是能够让人们更方便于去排查出问题出在哪儿的, 同时也能够帮助人们去更好地理解程序运行的那种流程。

3. 在进行断点调试这个操作的时段里面, 人们往往会需要去实现查看变量的当前数值以及进一步实现对变量数值的修改处理动作。

在断点调试的那个过程当中, 用户能够靠着集成开发环境提供的调试窗口去查看在当前这个作用范围里面的变量的数值, 绝大多数的集成开发环境还支持直接对变量的数值进行修改, 这样的话用户就能对不同的输入状况或者不同条件对程序的产生影响进行测试了, 通过这样的这种办法, 就能够非常迅速地验证那个修复方案是否正确或者是去进行各种实验, 完全就不需要再去重新运行一整个程序。

返回列表