Добрый вечер
Проблема в том что если deadlock все ж случился - gdb ничего не покажет. Можно сказать отладчику "stop" - но не видно никакого стека вызовов (одни ??). Часто помогает так (псевдокод)
C++ (Qt)
int threadNo = GetCurThread();
if (theLockOwner == threadNo)
Alert("deadlock"); // поймали
// захватываем
DO_LOCK;
theLockOwner = threadNo;
...
// работаем
...
// освобождаем
theLockOwner = -1;
DO_UNLOCK;
Но, увы, не всегда
Вопросы типа "а какой компилятор, версия, платформа?" - прошу не задавать. Если б оно штатными средствами решалось - не поленился бы выучить. Прошу поделиться опытом отлова.
Спасибо