Если вы создаете мьютекс как мьютекс с проверкой ошибок, используя:
pthread_mutexattr_t attr;
pthread_mutex_t errchkmutex;
pthread_mutexattr_init(&attr);
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK);
pthread_mutex_init(&errchkmutex, &attr);
... затем pthread_cond_wait()
вернет EPERM
, если мьютекс не заблокирован вызывающим потоком.
(конечно, вы бы добавили проверку ошибок в этот код инициализации мьютекса).
Я думаю, что проверочные мьютексы - это именно тот «режим отладки», который вы ищете.