gpt4 book ai didi

linux - 如何在 linux 中诊断 python 进程咀嚼 CPU

转载 作者:IT王子 更新时间:2023-10-29 00:23:53 26 4
gpt4 key购买 nike

我的 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/executable [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 - 如何在 linux 中诊断 python 进程咀嚼 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23838498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com