У вас есть несколько вариантов: проще всего проверить WCHAN
канал ожидания, на котором спит процесс:
$ ps -o "pid,wchan,comm"
PID WCHAN COMMAND
2350 wait bash
20639 hrtime i3status
20640 poll_s dzen2
28821 - ps
Это может дать вам хорошее представление о том, что процесс делает иочень легко получить.
Вы можете использовать ktruss
и ktrace
или DTrace
для отслеживания вашего процесса.(Извините, здесь нет Solaris, поэтому нет примеров.)
Вы также можете прикрепить gdb(1)
к своему процессу:
# gdb -p 20640
GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2
...
(gdb) bt
#0 0x00007fd1a99fd123 in __select_nocancel () at ../sysdeps/unix/syscall-template.S:82
#1 0x0000000000405533 in ?? ()
#2 0x00007fd1a993deff in __libc_start_main (main=0x4043e3, argc=13, ubp_av=0x7fff25e7b478,
...
Обратный след часто является единственным наиболее полезным отчетом об ошибках, который вы можетеполучить от процесса, поэтому стоит установить gdb(1)
, если он еще не установлен.gdb(1)
может сделать лот больше, чем просто показать вам обратные следы, но полное руководство выходит за рамки переполнения стека.