相关疑难解决方法(0)


从Python代码中的方法打印当前调用堆栈

在Python中,如何从方法中打印当前调用堆栈(用于调试目的).

python debugging stack-trace

257
推荐指数
6
解决办法
11万
查看次数

Python调试技巧

调试Python的最佳技巧是什么?

请不要只列出一个特定的调试器,而不说它实际上可以做什么.

有关

python debugging

164
推荐指数
12
解决办法
36万
查看次数

python:是否可以将控制台附加到正在运行的进程中

我只想查看进程的状态,是否可以将控制台附加到进程中,因此我可以调用进程内的函数并查看一些全局变量.

这个过程在不受影响的情况下运行会更好(当然性能可以降低一点)

python

78
推荐指数
4
解决办法
5万
查看次数

在尝试将GDB附加到进程时如何解决"ptrace操作不允许"?

我正在尝试使用gdb附加程序,但它返回给我:

附加到进程29139无法附加到进程.如果您的uid与目标进程的uid匹配,请检查/ proc/sys/kernel/yama/ptrace_scope的设置,或以root用户身份再次尝试.有关更多详细信息,请参阅/etc/sysctl.d/10-ptrace.conf ptrace:不允许操作.

edb-debugger返回"无法附加到进程,请检查权限,然后重试."

strace返回"attach:ptrace(PTRACE_ATTACH,...):不允许操作"

我将"kernel.yama.ptrace_scope"1更改为0并将"/ proc/sys/kernel/yama/ptrace_scope"1更改为0并尝试使用以下方法设置"set environment LD_PRELOAD =./ ptrace.so":

#include <stdio.h>
int ptrace(int i, int j, int k, int l) {
    printf(" ptrace(%i, %i, %i, %i), returning -1\n", i, j, k, l);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但它仍然返回相同的错误.我如何将它附加到调试器?

c linux debugging gdb strace

56
推荐指数
8
解决办法
5万
查看次数

我怎么知道我的python脚本挂在哪里?

所以我正在调试我的python程序并遇到一个使程序挂起的错误,就好像在无限循环中一样.现在,我之前遇到了无限循环的问题,但是当它挂断时我可以杀死程序并且python吐出一个有用的异常,告诉我当我发送kill命令时程序终止的位置.然而,现在,当程序挂断并且我按下ctrl-c时,它不会中止但会继续运行.我有什么工具可以用来找到挂机吗?我不熟悉分析,但据我所知,分析器只能为您提供有关已成功完成的程序的信息.或者您可以使用分析器来调试此类挂起吗?

python debugging

47
推荐指数
8
解决办法
5万
查看次数

转储所有活动线程的堆栈跟踪

我正在尝试转储所有活动线程的列表,包括每个线程的当前堆栈.我可以使用threading.enumerate()获取所有线程的列表,但我无法找到从那里到达堆栈的方法.

背景:一个Zope/Plone应用程序不时出现问题,消耗100%的CPU并需要重新启动.我感觉这是一个没有正确终止的循环,但我无法在test-environemt中重现它以进行验证.我设法注册一个可以从外部触发的信号处理程序,所以我可以在情况再次发生时立即触发一些代码.如果我可以为所有活动线程转储堆栈跟踪,这将给我一个问题的线索.洞的东西在python 2.4上运行......

关于如何追踪这些情况的任何想法都值得赞赏:)

干杯,克里斯

python multithreading zope plone

31
推荐指数
4
解决办法
2万
查看次数

使用pdb附加进程

我有一个python脚本,我怀疑有一个死锁.我试图调试,pdb但如果我一步一步地去,它不会得到死锁,并且通过返回的输出我可以看到它没有被挂在同一个迭代上.我想将我的脚本仅在它被锁定时附加到调试器,是否可能?如果有必要,我愿意使用其他调试器.

python debugging pdb

29
推荐指数
5
解决办法
4万
查看次数

有没有办法将调试器附加到多线程Python进程?

我试图在锁定后修改多线程Python应用程序中的死锁.有没有办法附加调试器来检查进程的状态?

编辑:我在Linux上尝试这个,但是如果有一个跨平台的解决方案那就太棒了.毕竟是Python的:)

python debugging

28
推荐指数
3
解决办法
3万
查看次数

我可以使用linux perf获取python调用堆栈吗?

例如,

    def test():
        print "test"
Run Code Online (Sandbox Code Playgroud)

我用过perf record -g -p $pid,但结果只是一切PyEval_EvalFrameEx.如何才能获得真实姓名"test"或者如果不能使用perf?

python linux perf

27
推荐指数
2
解决办法
2164
查看次数

标签 统计

python ×9

debugging ×6

linux ×2

c ×1

gdb ×1

hidden-features ×1

multithreading ×1

pdb ×1

perf ×1

plone ×1

stack-trace ×1

strace ×1

zope ×1