pdb调试与sublime快捷键设置

python pdb调试以及sublime3快捷键设置

pdb调试

如果对gdb比较熟悉的话,pdb就很容易上手。以一个demo快速了解常用的调试命令。

1
2
3
4
5
6
7
8
9
def test(a):
while True:
if a > 10:
break
a += 1
return a

if __name__ == '__main__':
test(1)
  • python -m pdb test.py进入调试环境
    或者python -m ipdb test.py
  • b test
    在test函数处设置断点,断点号为1

    1
    2
    (Pdb) b test
    Breakpoint 1 at f:\python\pdb\test.py:1
  • b 2
    在第二行设置断点,断点号为2

    1
    2
    (Pdb) b 2
    Breakpoint 2 at f:\python\pdb\test.py:2
  • condition 2 a==7
    在2号断点处设置条件 a==7

  • b
    显示所有断点信息

    1
    2
    3
    4
    5
    (Pdb) b
    Num Type Disp Enb Where
    1 breakpoint keep yes at f:\python\pdb\test.py:1
    2 breakpoint keep yes at f:\python\pdb\test.py:2
    stop only if a==7
  • cl 1
    去除1号断点,只有cl删除所有断点

    1
    2
    (Pdb) cl 1
    Deleted breakpoint 1
  • n
    单步跟踪,不进入函数

    1
    2
    3
    4
    5
    6
    (Pdb) n 
    > f:\python\pdb\test.py(8)<module>()
    -> if __name__ == '__main__':
    (Pdb) n
    > f:\python\pdb\test.py(9)<module>()
    -> test(1)
  • s
    单步跟踪,进入函数

    1
    2
    3
    4
    (Pdb) s
    --Call--
    > f:\python\pdb\test.py(1)test()
    -> def test(a):
  • c
    继续运行在 a==7 条件断点处停止

  • p a
    此时,打印a的值为7

    1
    2
    3
    4
    5
    (Pdb) c 
    > f:\python\pdb\test.py(2)test()
    -> while True:
    (Pdb) p a
    7
  • a
    打印所在函数参数

    1
    2
    (Pdb) a 
    a = 7
  • l
    查看运行到某处代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    (Pdb) l 
    1 def test(a):
    2 B-> while True:
    3 if a > 10:
    4 break
    5 a += 1
    6 return a
    7 if __name__ == '__main__':
    8 test(1)
    [EOF]
  • quit
    退出

sublime设置快捷键

sublime设置快捷键F5为运行,Ctrl+F5调试。就会对python调试方便很多。

  • Package Control中下载SublimeREPL
  • Preferneces -> Key Bingdings-User进行设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[
{
"keys": [
"f5"
],
"caption": "SublimeREPL: Python - RUN current file",
"command": "run_existing_window_command",
"args": {
"id": "repl_python_run",
"file": "config/Python/Main.sublime-menu"
}
},
{
"keys": [
"ctrl+f5"
],
"caption": "SublimeREPL: Python - PDB current file",
"command": "run_existing_window_command",
"args":
{
"id": "repl_python_pdb",
"file": "config/Python/Main.sublime-menu"
}
}
]

ipdb调试

ipdb之于pdb就像ipython之于python。ipdb是pdb的加强版,使用ipdb可以有语法高亮,自动补全等特性。