PyCharm Pro 2024.1.1调试疑问:F8步过不触发子函数断点
问题描述
在Windows 11系统中使用PyCharm Professional 2024.1.1版本时,调试行为不符合预期:
- 按
F8(步过)操作时,不会停留在被调用子函数内设置的断点 - 复现步骤:
- 创建新PyCharm项目,使用以下示例代码:
def print_hi(name): print(f'Hi, {name}') # 按Ctrl+F8切换断点 if __name__ == '__main__': print_hi('PyCharm') - 在第2行的
print语句和第5行的print_hi调用处设置断点 - 多次按
F9(继续)会在两个断点处均停止;但按F9停在第5行后按F8,不会触发第2行的断点
- 创建新PyCharm项目,使用以下示例代码:
用户疑问:
- 虽
F8是步过函数,但旧版本并非此行为 - 疑惑
F9同样是"步过"类操作,为何不会跳过断点 - 希望实现:无论使用何种步进按键,都能停在所有断点上
原因解析
先明确PyCharm调试按键的核心逻辑:
F9(Continue):程序从当前位置继续执行,只要遇到任何已启用的断点就会停止,不管断点在当前函数还是子函数内F8(Step Over):默认逻辑是"跳过当前行的函数调用,直接执行完函数并停在当前函数的下一行"。PyCharm在2023.3+版本调整了F8的断点触发规则——默认情况下,F8步过时会忽略子函数内的断点,这是为了贴合更标准的"步过"定义(不进入函数,直接执行完)。而旧版本(2023.2及之前)的F8会在步过过程中触发子函数断点,是因为当时的调试逻辑是"步过遇到断点就停"。
解决方案
要让F8(步过)在执行过程中也停在子函数的断点上,修改PyCharm的调试设置即可:
- 打开设置界面:按
Ctrl+Alt+S(Windows/Linux) - 导航到
Build, Execution, Deployment > Debugger > Stepping - 勾选**"Break on breakpoints when stepping"**选项
- 点击
Apply和OK保存设置
修改后,无论是F8(步过)、F7(步入)还是F9(继续),只要遇到已启用的断点,程序都会停止。
内容的提问来源于stack exchange,提问作者vscoder
相关产品推荐
相关产品推荐

