@olegar
Пару дней назад столкнулся с такой же проблемой и для отлова ошибок сначала навтыкал контрольных точек с выводом в лог, но потом нашел более эффетивный способ. На ВРЕМЯ ТЕСТИРОВАНИЯ асинхронную функцию делаем простым зацикленным потоком, а вместо его вызова делаем передачу параметров (или просто используем флаг вызова) через глобальную переменную (ну естественно в "асинхронную" функцию на это время придется добавить цикл ожидания этого флага).