J'essaie de comprendre comment implémenter un outil de couverture de code à l'aide de l'API de débogage Win32.Comment implémenter un outil de couverture de code à l'aide de l'API de débogage Win32
Je pensais utiliser le Win32 Debugging API pour lancer un processus en mode débogage - et suivre les instructions CPU qui ont été exécutées. Après avoir suivi toutes les instructions CPU, j'utiliserais alors le fichier map pour le mapper à quelles lignes de code source ont été exécutées. Si je comprends bien, il y aurait deux façons de savoir quelles instructions CPU ont été exécutées.
serait de lancer le processus en mode débogage - définir tous les threads en mode étape simple et de laisser la note d'application de débogage toutes les instructions qui ont été exécutées
Ce serait faire une approche plus intelligente où vous En savoir plus sur les instructions x86 et remplacer fondamentalement l'instruction de branchement suivante avec un point d'arrêt. Puis suivi des instructions delta entre les deux points d'arrêt.
Mise à jour - nouvelles approches suggérées inspirées par la réponse de Michael:
Démarrer avec le fichier de la carte et insérer des points d'arrêt pour le début de chaque ligne et de laisser la cadre de débogage être notifié chaque fois qu'un point d'arrêt frappe. Commencez avec le fichier map - instrumentation binaire pour insérer un "hook" qui est appelé à l'entrée de chaque ligne source - en évitant le callback dans la structure du débogueur.
En utilisant une technologie VM - tels que VMware pour savoir quelles instructions dans un processus particulier a été exécuté - Je ne comprends pas bien cette approche ...
Quelqu'un pourrait-il valider l'une des approches ci-dessus ou peut-être suggérer une alternative - veuillez noter que le cas d'utilisation est la couverture de code ligne par ligne et non le profilage de performance - nous devons donc savoir si chaque ligne de source unique est visitée.
Mon objectif principal (bien qu'aucun plan particulier ne soit en place ...) serait de créer un simple outil de couverture de code pour Delphi principalement.
Merci!
L'utilisation de Visual Studio Profiler est hors de question? Il peut instrumentaliser vos binaires et fournir une couverture de code. –
Merci - mais malheureusement hors de question pour une application Delphi ... :) –