"thread apply all bt" в gdb
Marko Kevac
marko на kevac.org
Сб Окт 2 19:22:17 MSD 2010
Привет.
Поясните, пожалуйста, почему команда "thread apply all bt" в gdb на
любом процессе nginx (мастер или воркеры) не даёт никакого вывода? При
этом просто "bt" работает.
Пример:
# gdb -ex "set pagination 0" -ex "thread apply all bt" -batch -p 6120
Using host libthread_db library "/lib/libthread_db.so.1".
0xffffe410 in __kernel_vsyscall ()
Насколько я знаю, вне зависимости от того используется или нет в
процессе больше одного треда, thread apply all bt должна работать. И
это подтверждается простой программой, состоящей из одного sleep-а:
$ cat main.c
#include <unistd.h>
int main()
{
sleep(1000);
return 0;
}
$ gdb -ex "set pagination 0" -ex "thread apply all bt" --batch -p 15052
0x00007f4bb39ab370 in __nanosleep_nocancel () at
../sysdeps/unix/syscall-template.S:82
82 ../sysdeps/unix/syscall-template.S: No such file or directory.
in ../sysdeps/unix/syscall-template.S
Thread 1 (process 15052):
#0 0x00007f4bb39ab370 in __nanosleep_nocancel () at
../sysdeps/unix/syscall-template.S:82
#1 0x00007f4bb39ab200 in __sleep (seconds=<value optimized out>) at
../sysdeps/unix/sysv/linux/sleep.c:138
#2 0x0000000000400532 in main () at main.c:4
Спасибо.
--
A. Because it breaks the logical sequence of discussion
Q. Why is top posting bad?
Подробная информация о списке рассылки nginx-ru