Исходя из логики работы PDO c БД — для нормальной отладки таки придется писать свой велосипед, т.к. сначала хочется полную строку запроса посмотреть, потом узнать где был вызван запрос, сколько он выполнялся и т.д. и т.п.
Самый правильный способ — отнаследоваться от PDO и PDOStatement, а своей обертке уже сделать «блекджек со шлюхами» например как здесь
daveyshafik.com/archives/605-debugging-pdo-prepared-statements.html
По ссылке выше далеко не самое лучшее решение, я бы перекрыл метод execute в PDOStatement и другие подобные методы так, чтобы например при включенной опции отладки они сами бы складывали нужную мне информацию в нужное место, а при выключенной отладке просто сквозняком пропускали запросы к PDO.