Несколько предложений:
Некоторые профилировщики позволяют вам переходить от любого конкретного метода вверх (а иногда и вниз), чтобы увидеть, что вызывается и вызывается. Я нашел эту удивительную информацию о потоке даже в приложениях, которые, как мне казалось, я хорошо знал.
Для понимания основного потока я не думаю, что есть лучшая замена для интерактивной работы с отладчиком. Это приведет вас к изучению других важных вещей. Не то, что ты хотел услышать, я знаю. Это предполагает, что вы можете быстро перезапустить приложение, если пропустите клавишу вне рампы.
Обратное проектирование больших унаследованных приложений - это то место, где я использую UML довольно регулярно. В моей голове слишком много всего, чтобы составить хорошую общую картину. Если у вас есть инструмент UML, который будет выполнять реверс-инжиниринг, загрузите его вместе с приложением, а затем, вероятно, сильно сократите классы, которые вам не нужны, потому что они тривиальны или очевидны. Расставьте диаграммы так, чтобы вы могли их понять. Таким образом я использовал «Вместе», «Волшебное рисование» и «Визуальную парадигму». Вместе работали лучше всего - но это было десять лет назад.