|
|
1
335
要使用它,只需在程序启动时调用listen()函数(您甚至可以将它粘贴到site.py中,让所有python程序都使用它),然后让它运行。在任何时候,都可以使用kill或python向进程发送SIGUSR1信号:
我有另一个脚本做同样的事情,除了它通过管道与正在运行的进程通信(允许调试后台进程等)。在这里发布有点大,但我添加了它作为一个 python cookbook recipe . |
|
|
2
151
安装信号处理器的建议很好,我经常使用它。例如
bzr
http://svn.python.org/projects/python/trunk/Misc/gdbinit
在里面
最后,附上
|
|
|
3
79
|
|
|
4
57
获取一个对象的堆栈跟踪 措手不及 python程序,在一个股票python中运行 可以用 pyrasite
|
|
|
5
37
docs . 编辑 :如@Douglas Leeder所建议的,要模拟Java的行为,请添加以下内容:
添加到应用程序中的启动代码。然后,您可以通过发送
|
|
|
7
24
你可以试试这个
faulthandler module
. 使用
在节目开始时。然后将SIGUSR1发送到您的流程(例如:
该模块现在是Python3.3的一部分。对于Python 2,请参见 http://faulthandler.readthedocs.org/ |
|
|
8
20
真正帮助我的是 spiv's tip (如果我有声望的话,我会投赞成票并发表评论)因为我从 Python进程。但直到我死了它才起作用 modified the gdbinit script . 因此:
|
|
|
9
13
如果要以交互方式调试代码,应按如下方式运行:
这告诉python解释器使用模块“pdb”运行脚本,该模块是python调试器,如果您像这样运行,解释器将以交互模式执行,就像GDB一样 |
|
|
10
12
我想补充这一点作为对 haridsv's response 我们中的一些人仍然坚持使用早于2.6的Python版本(Thread.ident需要),因此我让代码在Python 2.5中工作(尽管没有显示线程名称),如下所示:
|
|
|
11
11
看一看
|
|
|
12
7
在Solaris上,可以使用pstack(1),无需对python代码进行任何更改。如。
|
|
|
13
7
这可以用很好的方法来完成
py-spy
Python程序的采样分析器
,因此它的工作是附加到Python进程并对其调用堆栈进行采样。因此
下面是一个线程化Python应用程序的示例。
|
|
|
14
6
如果您使用的是Linux系统,请使用
这说明
example session 和更多信息 here here . |
|
|
15
6
我一直在寻找调试线程的解决方案,多亏了haridsv,我在这里找到了它。我使用了稍微简化的版本,使用了traceback.print_stack():
|
|
|
16
3
|
|
|
17
3
我拼凑了一些工具,将其连接到一个正在运行的Python进程中,并注入一些代码以获得Python shell。 |
|
|
18
2
pyringe 是一个调试器,可以与运行的python进程、打印堆栈跟踪、变量等交互,而无需任何先验设置。 虽然我过去经常使用信号处理程序解决方案,但在某些环境中仍然很难重现该问题。 |
|
|
19
2
如果您想查看正在运行的Python应用程序,以查看类似fashon的top中的“实时”调用堆栈,您可以使用austin tui( https://github.com/p403n1x87/austin-tui )。您可以从PyPI安装它,例如。
https://github.com/p403n1x87/austin ),但您可以使用
|
|
|
20
1
|
|
21
1
我在GDB阵营中使用python扩展。跟随 https://wiki.python.org/moin/DebuggingWithGdb
也考虑
|
|
|
22
1
如何调试任何函数 控制台中 : 你在哪里 使用pdb.set_trace()
然后调用创建的函数:
|
|
23
1
|
|
|
24
0
我不知道有什么类似的 java's response to SIGQUIT ,因此您可能必须将其构建到应用程序中。也许您可以在另一个线程中创建一个服务器,它可以在响应某种消息时获取stacktrace? |
|
|
25
0
不幸的是,strace通常是“修复”竞争条件的观察者,因此输出在那里也没有用处。 |
|
|
26
0
使用检查模块。
堆栈(上下文=1) 返回调用方帧上方堆栈的记录列表。 我觉得这确实很有帮助。 |
|
|
27
0
如果您花费大量时间调试Python,那么pdb是值得学习的。这个界面有点迟钝,但任何使用过类似工具(如gdb)的人都应该熟悉它。 |
|
|
28
0
如果您需要使用uWSGI执行此操作,它必须 Python Tracebacker 内置的,只需在配置中启用它(编号附在每个工作人员的名称上):
完成此操作后,只需连接到套接字即可打印回溯:
|
|
|
29
-1
在代码运行的地方,您可以插入这个小片段以查看格式良好的打印堆栈跟踪。它假定您有一个名为
|