Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在linux中诊断占用CPU的python进程_Linux_Gdb_Cpu Usage - Fatal编程技术网

如何在linux中诊断占用CPU的python进程

如何在linux中诊断占用CPU的python进程,linux,gdb,cpu-usage,Linux,Gdb,Cpu Usage,在自动脚本中,我的python进程在基于Linux的系统(Ubuntu)上开始运行。 我正试图在GDB中调试这个问题。我是GDB的新手。 是否有任何GDB命令来提供关于哪个线程正在使用大部分cpu的信息。 查看线程堆栈并不能真正说明这一点 在windows windbg world上,命令“!runaway’提供了进程中每个线程所消耗时间的信息。 我们这里有同等的命令吗? 关于调试问题的任何其他建议?一种可能的解决方案是使用命令top并选择显示所有线程: > top -H 默认情况下,任

在自动脚本中,我的python进程在基于Linux的系统(Ubuntu)上开始运行。 我正试图在GDB中调试这个问题。我是GDB的新手。 是否有任何GDB命令来提供关于哪个线程正在使用大部分cpu的信息。 查看线程堆栈并不能真正说明这一点

在windows windbg world上,命令“!runaway’提供了进程中每个线程所消耗时间的信息。 我们这里有同等的命令吗?
关于调试问题的任何其他建议?

一种可能的解决方案是使用命令top并选择显示所有线程:

> top -H
默认情况下,任务将按CPU使用情况排序


在上一个线程中可以找到替代解决方案

仅澄清诊断此问题所需的所有步骤。(感谢大家发帖):

以下命令显示进程及其CPU/内存使用情况的列表:

$ps auxf
以下命令给出了按CPU使用情况排序的进程的所有线程的列表:

$top-H-p[PID]
*PID用户PR NI VIRT RES SHR S%CPU%MEM TIME+命令*
**1654**root 20 0 1416m 1.2g 24m t**100**36.8 21:26.23 python
1687根20 0 1416m 1.2g 24m t 0 36.8 0:05.07 python
线程1654正在运行。将
gdb
附加到流程:

$gdb/path/of/process[pid]
gdb
中执行以下命令以获取线程列表:

(gdb)信息线程
内核vsyscall()中的2线程0xa7bffb40(LWP 20736)“python”0xb7736424
内核vsyscall()中的1个线程0xb73a56c0(LWP**1654**)“python”0xb7736424
gdb
中切换到线程以检查其堆栈:

(gdb) thread 1
(gdb) bt

top-H-p PID
更好<代码>-p:仅监视具有给定进程id的进程。此标志最多可给出二十次谢谢你们。这有助于找出哪个线程占用了cpu。是否有gdb命令来检测核心转储文件中的线程使用情况。假设该进程未处于该进程占用CPU的状态。事实上,这可能是来自客户的核心转储。此时,您需要的是一个探查器。我将从Python中实现的一个开始——通过较低级别的工具,您将获得更好的信息。直接跳转到gdb几乎肯定是一个错误的起点……虽然“我应该为Python使用哪个分析器?”是一个工具建议请求,在SO的当前规则下是一个离题的问题,但在这些规则生效之前,这个问题已经被问到并得到了回答,因此您可以在归档中找到大量信息。非常好。有没有办法知道哪个踏板正在消耗CPU?这个命令中的/path/of/process是什么意思
gdb/path/of/process[pid]
@nngeek
/bin/python
。另一种方法是使用
ps-eLf
,它在第四列中打印
LWP
,以及它在多个列中花费了多少时间。