поток применить все bt полный дает пустой в GDB

Я пытался отладить многопоточный процесс на сервере Linux с Slackware 12, используя GDB 6.6.

Как только я присоединяю и выдаю команду «thread apply all bt full», она возвращается ни с чем (возвращаясь к приглашению gdb).

Любая идея, почему это происходит?


person ϹοδεMεδιϲ    schedule 21.01.2010    source источник
comment
Программа запускается от имени другого пользователя или root? Вы работаете как root?   -  person Duck    schedule 21.01.2010
comment
Я попробовал оба. Процесс запускается от имени пользователя root, но с вызовом sudo от имени менее привилегированного пользователя.   -  person ϹοδεMεδιϲ    schedule 22.01.2010
comment
Тогда последнее предположение - вы уверены, что он многопоточный? Вы получаете какой-либо результат, просто используя bt?   -  person Duck    schedule 22.01.2010
comment
Пожалуйста, вырежьте/вставьте все ваше взаимодействие с GDB. Вы также можете обновить свою GDB до текущей версии (7.0.1).   -  person Employed Russian    schedule 23.01.2010
comment
@Duck, да, он многопоточный. при использовании bt я получаю обратную трассировку для одного потока.   -  person ϹοδεMεδιϲ    schedule 25.01.2010


Ответы (2)


Попробуйте последнюю версию GDB. 7.1 или 7.2. Все должно работать.

person Marko Kevac    schedule 03.10.2010

Я столкнулся с этой проблемой и обнаружил, что могу исправить ее следующим образом:

  1. запустить "бт". это должно показать обратную трассировку потока, хотя, возможно, не тот, который вы хотите.
  2. теперь "продолжение".
  3. нажмите Ctrl+C. Я вижу что-то вроде "[Переключение на LWP %d]"
  4. снова нажмите ctrl+c. это обрывается в потоке, который я хочу увидеть, но также, похоже, заставляет «поток применить все bt full» начать работать.
person Michael    schedule 13.09.2011
comment
спасибо за ваш пост; Я не мог больше пробовать это, так как я отошел от конкретной среды и этого конкретного процесса, с которым у меня были проблемы. +1 за подробный пост - person ϹοδεMεδιϲ; 14.09.2011