Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Un programme pas-à-pas

4 réponses
Avatar
Oupss
Bonjours à tous,

J’aimerais savoir comment écrire un récrite un programme qui peut
exécuté un programme pas-à-pas. Comme les débogueurs.

Merci à tous

Oupss

4 réponses

Avatar
Pascal J. Bourguignon
Oupss writes:

J’aimerais savoir comment écrire un récrite un programme qui peut
exécuté un programme pas-à-pas. Comme les débogueurs.



Ça dépend.

Ça dépend de ce que tu veux déboguer.

Si tu veux déboguer le binaire, ça dépend.

Ça dépend du processeur et de s'il fourni un mode opératoire
permettant d'exécuter pas-à-pas ou de placer des trappes. Donc il
faut lire la documentation du processeur, et utiliser les
fonctionnalité qu'il offre.

Si le processeur n'offre pas les fonctionnalités nécessaires (c'était
parfois le cas avec les anciens micro-processeurs, ou même certains
ancien processeurs; c'est aussi le cas quand tu veux déboguer des
programmes pour un processeur qui n'existe pas encore), alors il faut
écrire un émulateur du processeur en ajoutant ces fonctionnalités.

Si tu veux déboguer le source, il suffit d'écrire un interpreteur ou un
compilateur en ajoutant les fonctionnalités necessaires pour exécuter le
programme pas-à-pas.


Donc, pour apprendre à écrire un programme qui peut exécuter un autre
programme pas-à-pas, il faut apprendre:

- les processeurs,
- les émulateurs et machines virtuelles,
- les compilateurs et interpréteurs.

http://www.intel.com/content/www/xl/es/architecture-and-technology/64-ia-32-architectures-software-developer-vol-1-2a-2b-3a-3b-manual.html

http://wiki.qemu.org/Manual#Technical_Documentation

http://dragonbook.stanford.edu/


--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.
Avatar
Daimrod
Oupss writes:

Bonjours à tous,

J’aimerais savoir comment écrire un récrite un programm e qui peut
exécuté un programme pas-à-pas. Comme les débogueurs.

Merci à tous

Oupss



Salut,

Si tu es sous Linux tu peux regarder du coté de ptrace qui est entre
autre utilisé par gdb et strace.

https://en.wikipedia.org/wiki/Ptrace
Avatar
Antoine Leca
Oupss écriVIt :
J’aimerais savoir comment écrire un récrite un programme qui peut
exécuté un programme pas-à-pas. Comme les débogueurs.



Qu'est-ce qu'un « récrite » ?

OEQLC ?

Sinon,

Soit tu utilises une émulation (machine virtuelle ou interpréteur.)

Soit tu utilises les fonctions proposées par le processeur, qui sont
souvent mises à disposition des programmes utilisateurs genre débogueurs
mais par des interfaces (ptrace, proc/, DEBUG_EVENT) qui dépendent
beaucoup de chaque système d'exploitation ; tu auras ainsi accès
pas-à-pas aux instructions du processeur, c'est-à-dire en assembleur, ce
qui généralement un niveau trop détaillé pour être exploitable ; si ton
programme est en langage C, il te faudra ensuite faire la corrélation
entre les instructions machines et les « pas » du programme source ; en
général les compilateurs avec les options adéquates, souvent -g, savent
enregistrer des informations de corrélation entre les lignes du source
et les adresses binaires ; il suffit donc de décoder ces informations
(ce qui dépend du format binaire du système), interpoler, et laisser le
processeur continuer si la « ligne » reste la même.

Soit tout simplement tu utilises un débogueur qui fait cela très bien.
La plupart des débogueurs modernes ont une structure en couche, ce qui
permet de modifier substantiellement l'interface utilisateur pour
s'adapter aux besoins.


Antoine
Avatar
HAAAAAA, c'est la fin du monde on va tous MOURIR.
On Sun, 13 May 2012 10:50:18 +0200, Oupss wrote:

Bonjours à tous,

J’aimerais savoir comment écrire un récrite un programme qui peut
exécuté un programme pas-à-pas. Comme les débogueurs.

Merci à tous

Oupss



http://fr.wikipedia.org/wiki/SoftICE
Il n'est plus developpé depuis longtemps mais peut encore fonctionner
(sans certitude sur l'OS)

Sinon WinDBG de microsoft :
http://fr.wikipedia.org/wiki/WinDbg

Tout é en mode kernel.