我在自动脚本中的某个点上的python进程开始在基于Linux的系统(Ubuntu)上咀嚼CPU。 我正在尝试在GDB中调试此问题。我是GDB的新手。 是否有任何GDB命令来提供有关哪个线程正在使用大多数cpu的信息。 查看线程堆栈并不能真正解决这个问题。
在windows windbg world上命令'!失控'确实给出了进程中每个线程消耗的时间信息。 我们这里有同等的命令吗? 还有其他调试问题的建议吗?
答案 0 :(得分:14)
只是澄清诊断此问题所需的所有步骤。 (感谢所有人发帖):
以下命令显示进程列表及其CPU /内存使用情况:
ps auxf
以下命令提供按CPU使用情况排序的进程的所有线程列表。
top -H -p [PID]
PID用户PR NI VIRT RES SHR S%CPU%MEM TIME + COMMAND
1654 根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)信息主题
2线程0xa7bffb40(LWP 20736)__kernel_vsyscall()中的“python”0xb7736424
1个线程0xb73a56c0(LWP 1654 )“_ pynel”0xb7736424 __kernel_vsyscall()
在gdb中切换到线程来检查其堆栈。
(gdb)主题1
(gdb)bt
答案 1 :(得分:2)