GDB жалуется "нет доступного источника" при переключении на дочерний поток - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть родительский и дочерний поток в одном файле. Следуя основному потоку, GDB не имеет проблем: он правильно отображает исходный код с помощью команды "layout src" и значения переменных с помощью команды "disp val". Однако, как только я переключаюсь на другой поток (с помощью команды «поток 5»), «layout» не может отобразить исходный код и говорит «No Source Available», а «disp var» говорит «No Symbol var в текущем контексте».

  • дочерняя нить не отсоединена
  • родительский поток ожидает завершения дочернего потока с помощью функции "pthread_join"
  • Я использую C ++ 11 и CUDA 9,2

Edit:

Я подозреваю, что я не использую правильный файл "libthread_db". Тем не менее, я не знаю, что такое «libthread_db» и каков выбор. Если вы считаете, что это может быть источником проблемы, то не могли бы вы порекомендовать несколько совместимых файлов libthread_db?

Буду очень признателен за вашу помощь!

1 Ответ

0 голосов
/ 18 сентября 2018

«layout» не может отобразить исходный код и говорит «No Source Available», а «disp var» говорит «No Symbol var в текущем контексте».

Это, вероятно, означает, что:

  1. Поток (нет родительских / дочерних отношений между потоками) заблокирован в некоторых libc или libpthread функциях и
  2. У вас не установлено debuginfo для GLIBC.

Попробуйте выполнить шаг up от того, где поток заблокирован, и вы должны получить источник, как только вы достигнете уровня приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...