用于查看运行python进程的stacktrace的实用程序

pytb的Python项目详细描述


用于检查运行进程的python堆栈的实用程序(仅限x64 linux)

特点:

  • python3友好(pytb本身需要python2运行,但是进程 被分析的可以是Python3)
  • greenlet(gevent)友好,可以显示每个greenlet的stacktrace
  • 只需阅读/proc/<pid>/mem,因此不需要附加 目标进程(例如,如果您不想停止目标进程, 或者正在调试不可连接的进程,如d状态进程)

错误:

  • 仅限Linux,仅限64位。

安装:

pip install pytb

用法:

sudo pytb [pid]

将显示每个python线程的stacktrace。

如果还想查看greenlet stacktraces,请使用

sudo pytb -g [pid]

这也将向您展示greenlets stacktraces。注:为了找到 所有greenlets pytb查找所有gc跟踪的对象,因此这可能需要 如果你有很多东西。

注:

支持查看python2和python3的回溯(它会尝试猜测, 不管是2还是3,但是您可以通过指定-2或-3来帮助它 选项)

该实用程序通过读取/proc/<pid>/mem(这就是sudo是 需要)。它使用nmobjdump来查找内部python结构 在记忆中。

python进程也可能是用不同的标志编译的 影响内部python的结构字段对齐 pytb严重依赖于 -dpython-executable选项,其中python-executable是 包含所属进程的调试符号的可执行文件 感兴趣的。pytb在这种情况下将启动gdb并请求它 它感兴趣的字段的偏移量。

还有一个问题是frame->f_code->co_filename不包含 绝对路径,但相对路径 在某些地方,这些相对路径将变得无效(当 渲染堆栈跟踪)。对于这种情况,有--scriptdir dir 参数,默认为/proc/<pid>/cwd,用作 co_filename

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java希望直接扫描要上传到网页的文档   java JavaFX使对象可见,但不使用(忽略)点击   java LibGdx奇怪的纹理行为   java JavaFx ComboBox在第一次单击时未获得正确的值   api WebDav服务器库最好使用Java   java在Android中维护应用程序状态   java保存在Android中拖放RecyclerView后所做的更改我已经阅读了所有内容   无法读取项目中所需库tomcatembedwebsocket的java存档,或者该存档不是有效的ZIP文件   c#类在系统中有哪些关联?如何在UML中最好地表示它们?   java如何使用bazaar访问两台计算机上的同一文件夹   Java易失性与缓存一致性   java如何解决http11。校长:例外?   java liferaymavenplugin从maven Liferay 6.2.5(6.2 ga6)部署war   安卓的jar for java在哪里。木卫一。文件   java邻接矩阵中BFS的顺序是什么?   虚拟机如何从java启动linux虚拟机?   向DefaultListModel添加元素时java JList未更新   java JMSListener批注无法与REST服务一起使用   java DirectoryStream返回路径的顺序是什么?文件名,上次修改,文件大小?   java DropWizard Hibernate doc想说什么?