Я не знаю ни одной подобной возможности, поэтому не думаю, что вы так легко выйдете из нее - и, вероятно, она не будет настолько информативной, как вы думаете, помогая отладить вашу программу.Как бы низко не показалось это, логирование - ваш друг в отладке этих вещей.Начните собирать свои собственные маленькие функции регистрации.Они не должны быть модными, они просто должны выполнить работу во время отладки.
Извините за C ++, но что-то вроде:
void logit(const bool aquired, const char* lockname, const int linenum)
{
pthread_mutex_lock(&log_mutex);
if (! aquired)
logfile << pthread_self() << " tries lock " << lockname << " at " << linenum << endl;
else
logfile << pthread_self() << " has lock " << lockname << " at " << linenum << endl;
pthread_mutex_unlock(&log_mutex);
}
void someTask()
{
logit(false, "some_mutex", __LINE__);
pthread_mutex_lock(&some_mutex);
logit(true, "some_mutex", __LINE__);
// do stuff ...
pthread_mutex_unlock(&some_mutex);
}
Ведение журнала не является идеальным решениемно ничего нет.Обычно это дает вам то, что вам нужно знать.