如何调试正在运行的Python程序
对当前正在运行的程序执行调试操作的办法, 主要涵盖以下几个层面, 一方面是借助于程序内置的调试器pdb这个工具, 另一方面是使用集成开发环境本身所附带的用来进行调试的相关功能模块, 再就是通过在代码中间插入用于记录状态的日志信息, 最后还可以启用外部的专用调试设施比如VS Code这样的平台来配合工作在以上提及的这些各类技术手段里面, 依托系统自带的pdb调试器来进行问题排查, 被广泛认为是一种既具备极高实用性又充满灵活性的解决方案。咱们来使用一下那个内置的调试器, 也就是pdb。这个自带的调试器提供了非常强大的调试功能。这些功能包括了设置断点, 还有单步执行, 也包括检查变量, 当然还涵盖了调用栈。只要你在代码当中插入 pdb. () 这样的语句就行。这么一来, 程序就会暂停它的执行过程, 从而进入那种调试的模式里面。这样的话就可以进行逐步的这个调试。在这篇文章里面, 大家会看到关于这些方法的一个非常详细的介绍, 这样做就是希望能够帮助各位朋友把程序调试的工作给做好。一、通过使用内置的调试器, 也就是名为pdb的这个工具。1. 请用户进行断点的设置。在调试这个工作过程之中, 断点是一个非常重要的工具。它允许我们在程序的执行暂停在特意的某一行上。我们通过在代码里面插入 pdb; pdb. 这样的内容, 可以设置好断点。当程序执行到这一行代码的时候, 它就会暂停下来, 然后进入到调试的模式去进行后续的处理。import pdbdef test_function():x 10y 20pdb.set_trace() # 设置断点z x yprint(z)test_function()2. 单步执行当您进入到了调试模式这个状态以后, 就可以通过运用下面这些具体的命令操作方式来进行一个一个步骤地执行下去的工作了。3. 对当前的参数情况进行核对工作。现在处于调试模式下面。人们可以使用p这个命令去打印变量的值。这样做的目的是为了检查程序的状态。举个例子:p x # 打印变量x的值4. 调用栈通过执行w这一命令, 我们能够查看到当前的调用栈信息, 进而有助于对问题所在进行定位。二、你可以直接使用那个集成开发环境, 也就是IDE, 它自己自带有的调试工具来进行操作。1.它是一款功能非常强大的集成开发环境, 提供了非常多、丰富的调试功能。通过执行下面提到的这些步骤, 就可以使用这个调试工具程序来进行操作:2. Code (VS Code)大家现在也经常会用到 VS Code 这个代码编辑器, 它的人气也是非常高, 因为它同时也提供了功能特别强大的调试能力, 要是想通过这种方式去对程序进行相关的调试操作的话, 那么按照下面的这些具体步骤去做就可以了:三、插入日志1. 使用模块插入日志这种东西, 说白了就是一种特别简单、又特别有效的用来调试办法的。它这个做法是记录一下咱们那个程序到底是怎么执行的这么一个过程, 通过这么一记, 就能帮我们把到底是哪儿出现的问题给给定位出来。然后这里面它是提供了一个叫内置的那一套模块给你用的, 所以说用起来那叫一个方便。import logginglogging.basicConfig(levellogging.DEBUG)def test_function():x 10y 20logging.debug(fx{x}, y{y})z x ylogging.debug(fz{z})print(z)test_function()2. 不同级别的日志那个模块里面提供了不一样级别的日志, 这么一来就可以帮我们根据需要去记录那些不同重要性的信息。合理地使用这些日志级别, 可以让大家更清楚地看清程序的运行状况, 并且找到问题所在。四、使用外部调试工具1.它不光会提供那种整合到一起的调试功能, 还能和远程调试放到一起用。比如说, 那些在远程的服务器上跑着的程序, 你可以通过进行配置远程调试点方式, 来很方便地完成调试工作。它这样做的话, 就能让大家用起来省事得多。2. Code (VS Code)VS Code这个软件也是支持去远程的地方进行调试工作的, 你可以通过安装相应的插件的方式来进行操作, 这样就能在本地方便地调试那些位于远程服务器上面的程序代码了, 这种功能极大地方便了开发和调试的相关工作。五、其他调试技巧1. 使用语句语句能够用来检查程序的某些条件的状况, 判定其到底是真还是假的结果, 假如果条件得不到满足的状况发生话, 程序就会抛出异常的动作来, 这个做法可以帮助我们来快速地找到并且定位问题的所在点。def test_function():x 10y 20assert x y 30, x y should be 30z x yprint(z)test_function()2. 使用try-语句try这个语句, 它是可以拿来捕获异常的, 也是可以拿来处理异常的, 它这样子做的话呢, 就是能够协助我们更好地去调试我们的程序。def test_function():try:x 10y 0z x / yexcept ZeroDivisionError as e:print(fError: {e})else:print(z)test_function()3. 使用模块模块是标准库里面的单元测试框架, 它可以帮我编写测试用例, 还能帮助运行测试用例, 这样就能确保程序是正确的。import unittestdef add(x, y):return x yclass TestAddFunction(unittest.TestCase):def test_add(self):self.assertEqual(add(10, 20), 30)self.assertEqual(add(-1, 1), 0)self.assertEqual(add(0, 0), 0)if __name__ __mn__:unittest.main()咱们可以通过编写测试用例, 在调试的过程当中去快速地找到问题所在, 然后把这些问题给修复掉嘛, 这样就能够保证程序是正确的了。六、总结调试程序的办法其实有很多种, 你要是选了那种最适合自己的法子, 那肯定能一下子就让调试的效率变得很高。你看那些常用的招数都有什么, 比方说就用那个内嵌进去的 pdb 这个家伙来弄, 或者是直接用那些集成开发环境 IDE 里面自己自带的那套调试工具也行, 再一个就是往里塞一些用来记日志的代码然后等着它跑起来看输出。当然了, 用外头那些专门拿来搞调试的东西也是好选择, 就像像 VS Code 这个编辑器啦等等这些。你只要脑子里清楚这一点, 那就是把这些不同的办法都灵活地用起来去组合着来打怪升级, 这样你才能在那个叫定位bug的那个环节里更牛, 把问题给解决掉才痛快, 这样一来, 程序它到底正不正确, 稳不稳当, 你心里就有底了。关于常见问题, 我们提供了相关的问答内容。如何在中使用调试工具?提供了多种调试工具, 例子中有pdb, 通过在代码里插入pdb; pdb.(), 就可以在代码执行到那一行的时候进入调试模式, 这时候能够查看变量的数值, 逐行地执行程序代码并且设置断点, 以此来深入分析程序的运行情况。如何有效地捕获程序中的异常程序开发人员利用try-块, 能够捕获并处理异常。他们会在有可能发生错误的代码范围里加入try语句。与此同时, 还要在对应的代码块内部编写错误处理的逻辑。这样一来, 当程序运行过程中遭遇异常情况的时候, 它仍旧可以持续往下执行。这样做, 就可以避免程序突然崩溃的现象。此外, 开发者还可以根据具体的异常种类进行针对性地处理手段, 从而达到更加准确地掌控程序流程的目的。如何使用日志记录来调试程序日志这项记录手段, 它是调试工作里头的一种十分有效的做法。你那个使用的模块, 它可以在里面去设置那种不同的日志级别, 比如说什么DEBUG, INFO,还有个留空的括号, 然后是ERROR, 还有个留空的括号, 把这些个东西全都列出来, 而且你还可以把日志信息给弄到控制台上面去, 或者把它输出到文件里面去。这样做了之后, 你可以透过分析那些日志的信息, 来搞清楚地了解程序究竟是怎么个执行过程, 还有它的状态是怎么样的, 这对于快速地把问题给定位出来, 那就是大有帮助了。

相关新闻

云晖达中墨出海成功案例是否真实可靠

云晖达中墨出海成功案例是否真实可靠

深圳云晖达国际贸易有限公司,作为深耕中墨制造业出海领域的专业服务商,聚焦计划赴墨西哥投资布局的国内制造企业,提供从前期调研到本地运营的一站式全周期出海解决方案,助力国内制造企业把握USMCA政策红利,顺利落地墨西…

2026/10/2 21:43:50 阅读更多 →
Grafana页面告警配置实战:从阈值到通知策略的完整链路

Grafana页面告警配置实战:从阈值到通知策略的完整链路

前两周有个运维同事跑来找我,说自己 Grafana 面板做得挺漂亮,CPU 阈值画到了 85,可机器负载到 95% 半天了,手机上一个告警都没收到。我过去看了一眼就发现问题了:他把 Dashboard 面板里的阈值线当成了告警开关&#xf…

2026/10/2 21:43:50 阅读更多 →
掌握这8个后端技巧,开发效率翻倍

掌握这8个后端技巧,开发效率翻倍

契约先行,接口定义清楚再动手别急着写实现。先用OpenAPI或Swagger把接口的入参、出参、错误码定死。前端拿着文档并行开发,你按契约实现。接口是团队之间的合同,合同不清,扯皮不断。 契约先行,省掉的是联调时的来回拉锯…

2026/10/2 21:43:50 阅读更多 →

最新新闻

强化学习中的稀疏奖励难题:HER如何让智能体从失败中学习

强化学习中的稀疏奖励难题:HER如何让智能体从失败中学习

hindsight这个词,直译是“后见之明”,说人话就是事情做完之后回头看,才意识到当时其实应该怎么做。我第一次见到它出现在强化学习领域,是OpenAI那篇Hindsight Experience Replay论文里——这篇文章解决的问题非常朴实却很致命&…

2026/10/2 22:31:46 阅读更多 →
华为昇腾认证:蜜度校对通AI-Box边缘计算如何重塑内容审核

华为昇腾认证:蜜度校对通AI-Box边缘计算如何重塑内容审核

1. 从"校对"这件事说起:为什么网络内容审核需要专用硬件 做内容平台的人都有一个共识:文本校对这件事,看起来简单,做起来要命。传统的人工校对,一个熟练的编辑一天能处理十万字已经算高产,但面对…

2026/10/2 22:31:46 阅读更多 →
5G切换问题分析实战:从信令流程到参数优化的完整闭环

5G切换问题分析实战:从信令流程到参数优化的完整闭环

简介:围绕5G网络切换专题,这份PDF课件系统梳理了NSA与SA两种架构下的切换机制;NSA场景重点讲解PSCell变更,区分站内切换与站间切换:站内切换仅涉及同一eNB下的gNB变更,站间切换则需完成UE在不同eNB间的信令…

2026/10/2 22:31:46 阅读更多 →
Kali Linux 安装 Nessus 漏洞扫描器:从激活到实战全流程指南

Kali Linux 安装 Nessus 漏洞扫描器:从激活到实战全流程指南

1. 开工之前:Kali 上装 Nessus,到底图什么提到 Kali Linux,大部分人脑子里蹦出来的是一整套渗透测试工具链:Metasploit、Nmap、Burp Suite、Hashcat,要什么有什么。但真到做企业级安全评估或者漏洞管理的时候&#xff…

2026/10/2 22:31:46 阅读更多 →
8G显存也能跑!本地大模型代码生成实战与避坑指南

8G显存也能跑!本地大模型代码生成实战与避坑指南

一直被两个问题卡着:代码里大量的重复性工作占掉我不少时间,而有些涉及内部表结构和业务规则的代码又没法随便往云端AI平台上扔。后来我把目光放到了本地大模型上,摸了一圈下来发现,手头这块8G显存的NVIDIA显卡其实还挺能打——前…

2026/10/2 22:31:45 阅读更多 →
微服务韧性测试实战:从故障注入到混沌工程的完整指南

微服务韧性测试实战:从故障注入到混沌工程的完整指南

凌晨两点半,告警群里突然跳出二十多条消息,支付服务超时率直线飙升,订单服务重试请求把下游库存系统彻底打垮。那一刻我才意识到,过去几年在微服务测试上投入的大量用例,几乎没有一条在真正关键的时刻帮上忙——因为所…

2026/10/2 22:30:45 阅读更多 →

日新闻

从零搭建AI工程化:模型之外的完整闭环

从零搭建AI工程化:模型之外的完整闭环

先搞清楚一件事:从零开始做 AI 工程化,难的从来不是调模型、写提示词,而是把一套原型 Demo 变成长得像是“正经系统”的东西。你手里可能已经有了能跑通的代码,也可能刚读完一些概念,但真到了要把它变成可维护、可观测…

2026/10/2 0:00:20 阅读更多 →
大模型训练显存估计与混合精度训练实战指南

大模型训练显存估计与混合精度训练实战指南

1. 大模型训练显存估计与混合精度训练详解显存不够用,几乎是每个做大模型训练的人都会撞上的第一堵墙。你可能也经历过:模型代码写完了,数据管道跑通了,满心欢喜地按下训练启动脚本,结果几秒钟后终端弹出一行红字——C…

2026/10/2 0:00:20 阅读更多 →
小样本学习数据集选型指南:27个真正可用的高质量数据集

小样本学习数据集选型指南:27个真正可用的高质量数据集

1. 小样本学习的“弹药库”:为什么你总在找数据集,却总找不到真正能用的? 小样本、数据集——这两个词最近半年在我处理的200多个AI项目咨询里,出现频率排进前三。不是模型调不好,不是代码写不对,而是卡在…

2026/10/2 0:00:20 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 5:26:06 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 6:09:11 阅读更多 →