Да очень просто, как по мне , так даже удобней чем логи копать.
После каждого ошибка-опасного действия втавляю кубик с запросом в котором записываю в базу № потока и № этого самого кубика который запрос делает. В конце скрипта (точнее в конце потока) делаю запрос к базе удаляю все записи которые относятся к этому потоку(по № потока).
Если поток отработал правильно, дошел до конца, он удаляет из базы все свои записи.
Если поток отвалился, соответственно запрос на удаление не сделал, записи в базе остались.
Таким образом в базе остаются только записи отвалившихся потоков.
Screenshot from 2021-11-01 18-17-14.png
смотрю на последнюю запись отвалившегося потока, ищу (поиском) по номеру кубика нужный кубик, вижу где скрипт отвалился. Думаю почему, исправляю, пробую дальше