分享会(一) - 使用IDEA系列软件debug的全面技巧(Python为例)
使用IDEA系列软件debug的全面技巧腾讯会议分享会长期链接:https://meeting.tencent.com/dm/Qet4sVXmOccd每个人都会debug,所以该主题足够**普适。**但大家对各种语言的ide的熟悉程度也不一样, 也不一定能够使用好所有的功能,不同语言的ide提供的debug功能也不尽相同。笔者最熟悉python,所以以pycharm为例,不管在什么地方,jet b
使用IDEA系列软件debug的全面技巧
腾讯会议分享会长期链接:https://meeting.tencent.com/dm/Qet4sVXmOccd
每个人都会debug,所以该主题足够**普适。**但大家对各种语言的ide的熟悉程度也不一样, 也不一定能够使用好所有的功能,不同语言的ide提供的debug功能也不尽相同。
笔者最熟悉python,所以以pycharm为例,不管在什么地方,jet brains的ide都不会让你失望。
- python: pycharm
- go: goland
- c/c++: clion
- java:intellij
调试,将自己想象的过程与实际的过程做对比
基本单步调试技巧
- 打断点。断点当前行不执行
- step over。逐行执行代码
- step into。跳转进入当前行调用的函数,<不论函数是否在当前脚本文件内,都跳转>
- step into my code。只跳转当前脚本文件内的函数内部。(经测试也是可以进去其他脚本的。)
- step out。从里面一层的函数跳转到外边一层
- run to cursor。运行到光标选定的代码处
evaluate expressions
- 查看变量。经常看的变量添加到watch区
- 使if分支按照意愿执行
- 类似drop frame,重复执行一次某函数。
条件断点
满足条件时停止的断点。
异常断点
闪电标志:debug时,如果某行语句没打断点,但执行过程中产生异常,会在该行产生闪电标志的断点,同时停顿。
可以在左侧选择是否添加该类型的断点。

添加命令行参数
按照在命令行中添加参数的方式,在edit config的parameters栏添加参数。
jupyter notebook
基本一致,注意每一个块的代码执行后,相应的变量都会在全局生效。所以命名时,要谨慎一点。另外,一个好的noteboke可以保证从头到尾执行后,不出问题。
类的调试
可以实现__str__
函数令类更直观。
多线程调试
- print大法好。
- 一个线程调试,使用thread模式,只会阻塞该线程,其他线程会一直执行。使用all模式会在到达断点时阻塞所有线程(到达断点前,其他进程可能已经执行了),并且单步时其他线程也不会再执行。
- 想在多个线程分别调试,要全部使用thread模式,手动来条件各个进程的执行过程。
vscode远程调试
注意,vscode是以文件夹的形式来作为工程的。所以,一定要在调试的时候,在工程目录中大概vscode。不管是Linux还是Windows都一样。
c/c++安装好插件,以及gdb。如果工程目录对了,但是还是无法调试,就是插件或者其他东西没安装好。
vscode 远程debug 调试linux上的makefile工程步骤
Python会非常简单
其他(intellij调试技巧)
搞Java的同学再补充一下这个视频
方法断点
帮助判断具体是接口的哪个实现在运行。
drop frame
Java中可以重新执行函数。
python中可以使用evaluation实现大体相同的功能。
pycharm快捷键:
- Alt+Shift+E,将代码放到console中执行。
演示代码
https://github.com/SFUMECJF/weekly-report/tree/main/week2/codes
找到组织
在论坛页面。
问卷
希望大家能对本次分享会给个建议,链接或者扫码~
https://jinshuju.net/f/kok6NH
致谢
- cs61b某节课的lab
- bilibili的很多debug教程
互相交流
读者你好!如果你对本文内容感兴趣,我十分希望能够和你互相学习,可以扫码和我联系!一起进步

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)