python的pdb调试命令

一 pdb的部分调试命令
1. where(w) 找出当前代码运行位置
2. list(l) 显示当前代码的部分上下文
3. list <line number> 显示指定行的上下文
4. list <line number1, line number2> 显示指定开始行到结束行的代码
5. up(u) 返回上个调用点
6. down(d) 返回下个调用点
7. args(a) 显示当前所有变量
8. print(p) 打印表达式结果
9 ! 运行python命令,比如!test='hello' 将会把test变量的值改变为hello
10. pp 打印美化过的表达式结果
11. step 步进运行至下行代码(如果是调用函数,则运行至所调用函数的第一行)
12. next 运行至下行代码(如果是调用函数,会直接运行完此函数)
13. until 运行至当前代码端底部
14. return 运行至return代码处
15. break <line number> 运行时设置断点
16. continue 运行程序直至遇到下一个断点
17. break <file name:line number> 运行时设置另一个文件的断点
18. break 显示断点情况
19. disable <break number> 将指定的断点失效(但存在)
20. enable <break number> 将指定的断点生效
21. clear <break number> 删除断点
22. tbreak <line number> 运行时设置临时断点(运行一次后自动删除)
23. break <line number> <condition> 运行时设置断点,当满足condition条件时触发断点,ex: break 11 i > 10 表示在第11行代码处,当变量i大于10时,触发断点
24. condition <break number> <condition> 设置指定断点的触发条件
25. ignore <break number> <n> 忽略指定断点n次
26. commands <break number> ... end 对指定断点编写脚本,当运行到该断点时自动执行
 
二 pdb实例
  1. E:\python\work>python -m pdb prime.py
  2. > e:\python\work\prime.py(1)<module>()
  3. ->import math
  4. (Pdb) list
  5. 1->import math
  6. 2def isprime(i):
  7. 3for t in range(2,int(math.sqrt(i))+1):
  8. 4if i % t ==0:
  9. 5return0
  10. 6else:
  11. 7return1
  12. 8
  13. 9print('100到110之间的素数为:')
  14. 10for i in range(100,110):
  15. 11if isprime(i):
  16. (Pdb) l 12,15
  17. 12print(i)
  18. 13
  19. 14
  20. 15
  21. (Pdb) b 12
  22. Breakpoint1 at e:\python\work\prime.py:12
  23. (Pdb) b 7
  24. Breakpoint2 at e:\python\work\prime.py:7
  25. (Pdb) c
  26. 100110之间的素数为:
  27. > e:\python\work\prime.py(7)isprime()
  28. ->return1
  29. (Pdb) c
  30. > e:\python\work\prime.py(12)<module>()
  31. ->print(i)
  32. (Pdb) n
  33. 101
  34. > e:\python\work\prime.py(10)<module>()
  35. ->for i in range(100,110):
  36. (Pdb) n
  37. > e:\python\work\prime.py(11)<module>()
  38. ->if isprime(i):
  39. (Pdb) n
  40. > e:\python\work\prime.py(10)<module>()
  41. ->for i in range(100,110):
  42. (Pdb) n
  43. > e:\python\work\prime.py(11)<module>()
  44. ->if isprime(i):
  45. (Pdb)print i
  46. ***SyntaxError:Missing parentheses in call to 'print'
  47. (Pdb) p i
  48. 103
  49. (Pdb) where
  50. d:\python36\lib\bdb.py(431)run()
  51. ->exec(cmd, globals, locals)
  52. <string>(1)<module>()
  53. > e:\python\work\prime.py(11)<module>()
  54. ->if isprime(i):
  55. (Pdb)break
  56. NumTypeDispEnbWhere
  57. 1 breakpoint keep yes at e:\python\work\prime.py:12
  58. breakpoint already hit 1 time
  59. 2 breakpoint keep yes at e:\python\work\prime.py:7
  60. breakpoint already hit 1 time
  61. (Pdb) disable 1
  62. Disabled breakpoint 1 at e:\python\work\prime.py:12
  63. (Pdb)break
  64. NumTypeDispEnbWhere
  65. 1 breakpoint keep no at e:\python\work\prime.py:12
  66. breakpoint already hit 1 time
  67. 2 breakpoint keep yes at e:\python\work\prime.py:7
  68. breakpoint already hit 1 time
  69. (Pdb) n
  70. > e:\python\work\prime.py(7)isprime()
  71. ->return1
  72. (Pdb) where
  73. d:\python36\lib\bdb.py(431)run()
  74. ->exec(cmd, globals, locals)
  75. <string>(1)<module>()
  76. e:\python\work\prime.py(11)<module>()
  77. ->if isprime(i):
  78. > e:\python\work\prime.py(7)isprime()
  79. ->return1
  80. (Pdb) cl
  81. Clear all breaks? y
  82. Deleted breakpoint 1 at e:\python\work\prime.py:12
  83. Deleted breakpoint 2 at e:\python\work\prime.py:7
  84. (Pdb)break
  85. (Pdb) c
  86. 103
  87. 105
  88. 107
  89. 109
  90. The program finished and will be restarted
  91. > e:\python\work\prime.py(1)<module>()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值