Debug dei thread deadlock in un programma MT?
-
20-08-2019 - |
Domanda
Quali sono i modi possibili per eseguire il debug dei thread di deadlock in un programma MT, diverso da gdb?
Altri suggerimenti
Se stai usando POSIX, prova a indagare su PTHREAD_MUTEX_ERRORCHECK.
Ho sempre investito un po 'di tempo nella scrittura o nell'innesto in una struttura di registrazione flessibile in progetti su cui ho lavorato, e ha sempre ripagato profumatamente nel trasformare bug difficili in semplici. Per lo meno, avvolgere le primitive di blocco in funzioni o metodi che registrano prima e dopo la registrazione e visualizzano l'oggetto bloccato e il thread che sta eseguendo il blocco mi ha sempre aiutato a concentrarmi sul thread offensivo in pochi minuti - supponendo che il problema può essere riprodotto, ovviamente.
Il caricamento del programma sotto un debugger è in realtà un metodo piuttosto limitato per determinare cosa è successo una volta che un processo si blocca, dal momento che tutto ciò che può darti è un'istantanea di quanto hai incasinato, piuttosto che una spiegazione passo-passo di come rovinato, che trovo molto più utile.
O ottieni Intel Thread Checker. Ottimo lavoro.