File tree 1 file changed +7
-7
lines changed
1 file changed +7
-7
lines changed Original file line number Diff line number Diff line change 5
5
----------
6
6
问题
7
7
----------
8
- 你的程序奔溃后该怎样去调试它 ?
8
+ 你的程序崩溃后该怎样去调试它 ?
9
9
10
10
----------
11
11
解决方案
12
12
----------
13
- 如果你的程序因为某个异常而奔溃 ,运行 ``python3 -i someprogram.py `` 可执行简单的调试。
13
+ 如果你的程序因为某个异常而崩溃 ,运行 ``python3 -i someprogram.py `` 可执行简单的调试。
14
14
``-i `` 选项可让程序结束后打开一个交互式shell。
15
15
然后你就能查看环境,例如,假设你有下面的代码:
16
16
38
38
20
39
39
>>>
40
40
41
- 如果你看不到上面这样的,可以在程序奔溃后打开Python的调试器 。例如:
41
+ 如果你看不到上面这样的,可以在程序崩溃后打开Python的调试器 。例如:
42
42
43
43
::
44
44
70
70
print (' **** AN ERROR OCCURRED ****' )
71
71
traceback.print_exc(file = sys.stderr)
72
72
73
- 要是你的程序没有奔溃 ,而只是产生了一些你看不懂的结果,
73
+ 要是你的程序没有崩溃 ,而只是产生了一些你看不懂的结果,
74
74
你在感兴趣的地方插入一下 ``print() `` 语句也是个不错的选择。
75
75
不过,要是你打算这样做,有一些小技巧可以帮助你。
76
76
首先,``traceback.print_stack() `` 函数会你程序运行到那个点的时候创建一个跟踪栈。例如:
104
104
pdb.set_trace()
105
105
...
106
106
107
- 当程序比较大二你想调试控制流程以及函数参数的时候这个就比较有用了 。
107
+ 当程序比较大而你想调试控制流程以及函数参数的时候这个就比较有用了 。
108
108
例如,一旦调试器开始运行,你就能够使用 ``print `` 来观测变量值或敲击某个命令比如 ``w `` 来获取追踪信息。
109
109
110
110
----------
115
115
你在开发的时候,也可以在你需要调试的地方插入一下 ``print() ``
116
116
函数来诊断信息(只需要最后发布的时候删除这些打印语句即可)。
117
117
118
- 调试器的一个常见用法是观测某个已经奔溃的函数中的变量 。
119
- 知道怎样在函数奔溃后进入调试器是一个很有用的技能 。
118
+ 调试器的一个常见用法是观测某个已经崩溃的函数中的变量 。
119
+ 知道怎样在函数崩溃后进入调试器是一个很有用的技能 。
120
120
121
121
当你想解剖一个非常复杂的程序,底层的控制逻辑你不是很清楚的时候,
122
122
插入 ``pdb.set_trace() `` 这样的语句就很有用了。
You can’t perform that action at this time.
0 commit comments