Debug

  • dead loop

1、top -H -p <pid> 查看进程线程CPU状态,如下,可以看到线程6890占用CPU将近100%,可以断定该线程中代码死循环:

root@test:/# top -H -p 6205

top - 20:17:11 up 1 day, 1:21, 4 users, load average: 1.00, 1.15, 1.15

Tasks: 9 total, 1 running, 8 sleeping, 0 stopped, 0 zombie

Cpu(s): 27.0%us, 2.5%sy, 0.0%ni, 70.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Mem: 3984908k total, 1193492k used, 2791416k free, 17468k buffers

Swap: 0k total, 0k used, 0k free, 492616k cached

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

6890 root 20 0 132m 32m 7300 R 97 0.8 131:57.50 xxx

6739 root 20 0 132m 32m 7300 S 1 0.8 13:51.51 xxx

6205 root 20 0 132m 32m 7300 S 0 0.8 2:36.50 xxx

6888 root 20 0 132m 32m 7300 S 0 0.8 0:44.79 xxx

6889 root 20 0 132m 32m 7300 S 0 0.8 0:00.02 xxx

6891 root 20 0 132m 32m 7300 S 0 0.8 0:00.00 xxx

6892 root 20 0 132m 32m 7300 S 0 0.8 0:04.20 xxx

6893 root 20 0 132m 32m 7300 S 0 0.8 0:00.00 xxx

6894 root 20 0 132m 32m 7300 S 0 0.8 1:44.26 xxx

2、gdb该线程gdb [executable-file [core-file or process-id]] [thread-id],如gdb /usr/bin/xxx 6890, 多次bt查看线程正在执行调用栈,,找到死循环的函数:

(gdb) bt

#0 0x0f676e6c inxxx_key () from /usr/lib/libxxx.so.0

#1 0x0f674d4c in xxx_next () from /usr/lib/libxxx.so.0

#2 0x0e8c42ac in xxx_add (object=0xb55fd12c) at xxxx.c:12661

#3 0x0e8c9d04 in xxx_mib (objectType=objectType@entry=82, object=0xb55fd12c, op=op@entry=1) at xxxx.c:5396

#4 0x0e8ca6f4 in xxxObject (objectType=82, object=<optimized out>) at xxxx.c:4616

#5 0x008b2d94 in ?? () from /usr/lib/libxxxx.so.0

#6 0x0eae29b0 in xxx_command () from /usr/lib/libxxxx.so.0

#7 0x0eae4bcc in xxx_parse () from /usr/lib/libxxxxx.so.0

#8 0x0ebc9124 in ?? () from /usr/lib/libxxxxx.so.0

#9 0x0fe07d84 in ?? () from /lib/libpthread.so.0

#10 0x0ff26068 in clone () from /lib/libc.so.6


(gdb) bt

#0 0x0ec583c0 in xxxPut () from /usr/lib/libxxx.so.0

#1 0x0f674d74 in xxx_next () from /usr/lib/libxxx.so.0

#2 0x0e8c425c in xxx_add (object=0xb55fd12c) at xxxx.c:12663

#3 0x0e8c9d04 in xxx_mib (objectType=objectType@entry=82, object=0xb55fd12c, op=op@entry=1) at xxxx.c:5396

#4 0x0e8ca6f4 in xxxObject (objectType=82, object=<optimized out>) at xxxx.c:4616

#5 0x008b2d94 in ?? () from /usr/lib/libxxxxx.so.0

#6 0x0eae29b0 in xxx_command () from /usr/lib/libxxxxx.so.0

#7 0x0eae4bcc in xxx_parse () from /usr/lib/libxxxxx.so.0

#8 0x0ebc9124 in ?? () from /usr/lib/libxxxxx.so.0

#9 0x0fe07d84 in ?? () from /lib/libpthread.so.0

#10 0x0ff26068 in clone () from /lib/libc.so.6

可以看出xxx_add函数已经死循环。

results for ""

    No results matching ""