Все вышеперечисленные варианты хороши и могут вам помочь. Но я не понимаю, как настройка TracePoing с помощью мыши может помочь вам, если в вашем коде тысячи функций.
Такие вещи должны быть частью вашей обычной работы по программированию. Когда вы пишете функцию, вы должны подумать, какое сообщение трассировки поможет вам ее отладить.
Вам необходимо написать / использовать существующий регистратор, который может быть разделен на раздел (поток чтения, рабочий поток и т. Д.) И различные уровни ведения журнала (ошибка, предупреждение, трассировка, подробный и т. Д.). Хороший регистратор должен быть спроектирован таким образом, чтобы он не снижал производительность, это обычно наносит ущерб многословности, но сложные проблемы синхронизации обычно можно воспроизвести, если ведение журнала не очень быстрое, например, назначение строкового указателя на массив, который может быть сброшен после проблемы воспроизводится. Я обычно начинаю отладку с полной трассировки, выведенной на экран, и если мне повезет и ошибка воспроизведена таким образом, исправление ошибки является тривиальным, потому что у меня уже есть достаточно информации, веселье начинается, когда проблема исчезает, и вам нужно играть с многословием, чтобы воспроизведите проблему.
Я нахожу отладку более креативной и приятной, чем написание кода, но это только я:).