Fer*_*eru 7 linux gdb cpu-usage
我在自动脚本中的某个点上的python进程开始在基于Linux的系统(Ubuntu)上咀嚼CPU.我正在尝试在GDB中调试此问题.我是GDB的新手.是否有任何GDB命令来提供有关哪个线程正在使用大多数cpu的信息.查看线程堆栈并不能真正解决这个问题.
在windows windbg世界中,命令'!runaway'确实给出了进程中每个线程消耗的时间信息.我们在这里有相同的命令吗?还有其他调试问题的建议吗?
Fer*_*eru 14
只是为了澄清诊断此问题所需的所有步骤.(感谢大家的帖子):
以下命令显示进程列表及其CPU /内存使用情况:
ps auxf
以下命令提供按CPU使用情况排序的进程的所有线程列表.
顶部-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)__kernel_vsyscall()中的"python"0xb7736424
在gdb中切换到线程来检查其堆栈.
(gdb)线程1
(gdb)bt
小智 2
一种可能的解决方案是使用带有选项的 top 命令来显示所有线程:
> top -H
Run Code Online (Sandbox Code Playgroud)
默认情况下,任务将按 CPU 使用率排序。
可以在之前的线程中找到替代解决方案。
| 归档时间: |
|
| 查看次数: |
6154 次 |
| 最近记录: |