Je suis issu d'une formation en ingénierie matérielle. Il est possible qu'une réponse existe déjà sur ce site à ma question.

J'utilise certains programmes en tant qu'ingénieur matériel qui sont assez vastes et complexes. Le programme principal repose sur de nombreux exécutables plus petits pour faire son travail. Existe-t-il un moyen d'obtenir une trace des autres programmes qu'il appelle et avec quels paramètres lorsque j'utilise le programme, quand ils démarrent et quand ils se terminent ?

Le but est de pouvoir écrire un script Python ou un script TCL qui effectuera automatiquement toutes ces étapes.

0
Quantum0xE7 2 oct. 2020 à 20:39

1 réponse

Meilleure réponse

Sous Linux, l'approche la plus simple consiste à utiliser strace pour suivre tous les appels système, à la recherche de l'appel système execve() (qui lance en fait l'exécution d'un autre binaire). Il y aura beaucoup d'autres sorties générées car la plupart des programmes font pas mal d'appels système, vous devrez donc expérimenter un peu pour obtenir les informations que vous voulez.

# Hint: it's much easier to write the output to a file with the -o option
strace -o strace_dump.txt  your_program argument_1 argument_2 ...

L'équivalent sur macOS est dtruss, mais vous devriez lire attentivement comment le faire fonctionner :

Sous Windows, il semble y avoir quelques options :

1
Donal Fellows 3 oct. 2020 à 10:21