Branch trace — это инструмент отладки компьютерных программ или метод анализа. Это сокращенная трассировка инструкций, в которой записываются только успешные инструкции ветвления . В IBM System/360 это было реализовано как часть Program-Event Recording (PER) [1] , но редко использовалось на уровне прикладного программирования. Использовалось аппаратное обеспечение Program Event Recording, и из-за накладных расходов этого инструмента оно было удалено из доступных клиентам систем MVS .
Трассировка ветвей также доступна для процессоров Pentium 4 , Xeon и более поздних процессоров Intel . [2] Существуют специальные команды процессора для включения трассировки ветвей и сохранения выполненных ветвей в специальной области Intel Branch Trace Store (BTS) резидентной памяти. Branch Trace Store также можно настроить как кольцевой буфер, чтобы записывать последние выполненные ветви. Трассировка ветвей на процессорах Intel с использованием Branch Trace Store может привести к 40-кратному замедлению выполнения приложения. [3] Для процессоров Intel Core M и 5-го поколения процессоров Intel была введена Intel PT (Processor Trace), которая направлена на обеспечение полной трассировки потока управления. Говорят, что Intel PT оказывает лишь минимальное влияние на выполнение программы (< 5%). [4]
При наличии и ссылке на листинг компилятора программы вместе с трассировкой ветвления можно восстановить полный путь выполненных инструкций. Приложив гораздо больше усилий, полный путь можно даже восстановить с помощью дампа памяти (содержащего хранилище программы) и трассировки ветвления.
Более полную трассировку всех инструкций (включая инструкции между ветвями) можно получить с помощью симулятора набора инструкций (если он доступен на некоторых платформах). Полная трассировка инструкций может предоставить дополнительную информацию, такую как адрес/длина и значение изменений памяти.