Je ne connais pas d'installation de ce type, donc je ne pense pas que vous vous en sortirez aussi facilement - et cela ne serait probablement pas aussi instructif que vous le pensez pour aider à déboguer votre programme. Aussi peu technique que cela puisse paraître, la journalisation est votre amie pour déboguer ces choses. Commencez à rassembler vos propres petites fonctions de journalisation. Elles n'ont pas besoin d'être sophistiquées, elles doivent juste faire le travail pendant le débogage.
Désolé pour le C++ mais quelque chose comme :
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);
}
La journalisation n'est pas une solution parfaite, mais rien ne l'est. Elle vous permet généralement d'obtenir ce que vous avez besoin de savoir.