如何诊断在Linux中咀嚼CPU的python进程

如何诊断在Linux中咀嚼CPU的python进程,第1张

概述我在自动脚本中的某个点上的 python进程开始在基于 Linux的系统(Ubuntu)上咀嚼CPU. 我正在尝试在GDB中调试此问题.我是GDB的新手. 是否有任何GDB命令来提供有关哪个线程正在使用大多数cpu的信息. 查看线程堆栈并不能真正解决这个问题. 在windows windbg世界中,命令’!runaway’确实给出了进程中每个线程消耗的时间信息. 我们在这里有相同的命令吗? 还有其 我在自动脚本中的某个点上的 python进程开始在基于 Linux的系统(Ubuntu)上咀嚼cpu.
我正在尝试在GDB中调试此问题.我是GDB的新手.
是否有任何GDB命令来提供有关哪个线程正在使用大多数cpu的信息.
查看线程堆栈并不能真正解决这个问题.

在windows windbg世界中,命令’!runaway’确实给出了进程中每个线程消耗的时间信息.
我们在这里有相同的命令吗?
还有其他调试问题的建议吗?

解决方法 只是为了澄清诊断此问题所需的所有步骤. (感谢大家的帖子):

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

ps auxf

以下命令提供按cpu使用情况排序的进程的所有线程列表.

top -H -p [PID]

PID USER PR NI VIRT RES SHR S %cpu %MEM TIME+ COMMAND

1654 root 20 0 1416m 1.2g 24m t 100 36.8 21:26.23 python

1687 root 20 0 1416m 1.2g 24m t 0 36.8 0:05.07 python

线程1654正在咀嚼cpu.将gdb附加到进程

gdb /path/of/process [pID]

在gdb中执行以下命令以获取线程列表

(gdb) info threads

2 Thread 0xa7bffb40 (LWP 20736) “python” 0xb7736424 in __kernel_vsyscall ()

1 Thread 0xb73a56c0 (LWP 1654) “python” 0xb7736424 in __kernel_vsyscall ()

在gdb中切换到线程来检查其堆栈.

(gdb) thread 1

(gdb) bt

总结

以上是内存溢出为你收集整理的如何诊断在Linux中咀嚼CPU的python进程全部内容,希望文章能够帮你解决如何诊断在Linux中咀嚼CPU的python进程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1030241.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存