Я пытаюсь понять, как реализовать инструмент покрытия кода с помощью API отладки Win32.
Я думал об использовании Win32 Debugging API для запуска процесса в режиме отладки - и отслеживания того, какие инструкции ЦП были выполнены. После отслеживания всех инструкций ЦП я бы использовал файл карты, чтобы сопоставить его с тем, какие строки исходного кода были выполнены.
Насколько я понимаю, было бы два способа узнать, какие инструкции процессора выполнялись.
Будет запускать процесс в режиме отладки - установить все потоки в одношаговом режиме и позволить приложению отладки записывать все выполненные инструкции
Было бы более разумным подходом, когда вы узнали бы намного больше о командах x86 и в основном заменили бы следующую инструкцию ветвления точкой останова. Затем отслеживание дельта-инструкций между двумя точками останова.
Обновление - новые предложенные подходы, вдохновленные ответом Майкла:
Начните с файла карты и вставьте точки останова в начале каждой строки и позвольте инфраструктуре отладки получать уведомления каждый раз, когда достигается точка останова.
Начните с файла карты - двоичного инструментария для вставки «ловушки», которая вызывается при входе в каждую строку источника - избегая обратного вызова через инфраструктуру отладчика.
Использование технологии VM - такой как VMware, чтобы узнать, какие инструкции были выполнены в конкретном процессе - я не полностью понимаю этот подход ...
Может ли кто-нибудь подтвердить один из вышеперечисленных подходов или предложить альтернативу - обратите внимание, что вариант использования - это построчное покрытие кода, а не профилирование производительности - поэтому нам нужно знать, посещена ли каждая отдельная строка источника.
Моя основная цель (хотя нет конкретного плана ...) заключалась бы в создании простого инструмента покрытия кода в первую очередь для Delphi.
Спасибо!