Pycharm调试器综述

来源:互联网 发布:北海市网络预约车 编辑:程序博客网 时间:2024/06/04 21:51

场景

  • “代码有没有跑到这里呀,加个print看看,这里也加个print呢,那里也加个print呢。调试完了还得把print语句删掉”
  • “为啥这个地方循环没跑进去呢”
  • “Django接口返回hello world的时候发生了什么”
  • “调试过程中,有个超复杂的dict,我想看里面的某个key,不方便看”

说白了,调试器比print的好处在于,调试器可以用丰富的姿势来跟踪代码,暗中观察,且不污染代码

当调试时忍不住想要加print的时候,先想想用调试器是不是更好

断点

代码跑到断点的时候停下。不包含断点所在那行代码。即断点那行代码尚未执行。

在pycharm中可以直接拖动断点。

行断点

有条件的行断点

当断点满足某个条件的时候才停下。

异常断点

当代码出现某个异常的时候自动停下。不用自己手动打断点。

step by step

step over —— 遇到函数不会跳进去,而是平躺过去
step into —— 遇到函数跳进去
step out —— 从函数里面跳出来。即跳到上一级。
step into my code —— 忽略库代码,只在业务代码跳
run to cursor —— 代码执行到光标所在的那行

窗口

inline显示变量值

直接在代码旁边显示变量值

Evaluate Expression

可以即时求值。

不但可以运行表达式,还可以切换到代码片段模式,运行代码片段。

Variables

观察当前所有变量值

当一个函数返回时,还会显示返回值Return Values

Watchs

可以添加想要观察的变量

注: watchs可以合在variables窗口里面一起显示,不需要单独的watchs窗口。
再注: 可观察的不止是变量,还可以是表达式,比如a+b;甚至可以是代码片段,比如import json; tmp = json.laods(ret)

Frames

函数的调用栈。可上下移动。可选择某个thread。