"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