Voir les données mise en mémoire par un processus

Bonjour,

Existe t’il un package Debian, qui permet d’afficher en temps réel les valeurs et les types de toutes les données qu’un processus met en mémoire.

Merci


Remplacer $$ par le pid du processus qui t'intéresse.
Tu peux aussi lister tous les descripteurs de fichiers ouverts via [code] ls -la /proc/$$/fd/[/code]

Remplacer $$ par le pid du processus qui t’intéresse.
Tu peux aussi lister tous les descripteurs de fichiers ouverts via ls -la /proc/$$/fd/

En fait, ce que je voudrai c’est pouvoir voir, les valeurs des variables stockés en mémoire par le processus, et non leur adresse.

Par exemple voir le nombre entier pour une variable de type int , ou la chaine de caractère pour une variable de type string.

En codant un peu de C, tu pourras lire la valeur stockée à cette adresse : http://stackoverflow.com/questions/16778155/in-c-how-can-i-print-out-what-is-stored-at-a-specific-memory-address

En fait, je ne sait pas si les les “cases mémoire” contiennent uniquement la valeur binaire des variables, ou si elle contiennent également un préfixe, qui indique leur type.

Si j’ obtient la valeur int d’une string, ça n’auras pas beaucoup de sens.

Voilà une question intéressante. Ce qui est stocké en mémoire n’est que le contenu de la variable. Le type est une sorte de convention du programme avec lui-même (convention qui, au passage, ne sort pas de l’environnement du programme vers le système d’exploitation, par exemple).

Si tu veux pouvoir connaître aussi le type d’une variable, je t’invite à t’orienter vers les débuggeurs et les profilers.

Est ce qu’il est possible d’accéder aux instructions machines qui traitent ces variables ?

Cela dépend du langage de programmation utilisé. C’est vrai pour le langage C, pas forcément pour d’autres langages à typage “dynamique”.

Exercice Trouver les variables et leur contenu du programme befunge-98 suivant (lancé avec pyfunge par exemple )

# ;email.b98;"naej"v
      >,v
      |:<"F. Petit"<
 v  ,a<
 >aab*1-:2+:c-:7-2/:88*5++:9-9-:a9++:b-:9+:d-:7a++:1-: aa+-:4+:d+:3+:a9+-88v
 @_,#! #:<+2*aa+8+9:-d:+b:-c:+6:-a:-6*bb-+2*88:+b:-f:+b:-b:+a:+5:+4:-d:*ab*<

Il me semble que cela remet en cause la pertinence de la première question :smile: De même pour le script python d’une ligne après la signature, approfondissez les notions d’espace de noms (et espace d’adressage).

Cordialement,
Regards,
Mit freundlichen Grüssen,
ﻢﻋ ﺖﺤﻳﺎﺘﻳ ﺎﻠﺧﺎﻠﺻﺓ
F. Petitjean

« On ne perd pas son temps en aiguisant ses outils. »
Proverbe français

python -c "print 'c2VuYXBidmYgUUJHIGNyZ3Znd3JuYSBORyBvaGVybmhpcmV2Z25mIFFCRyBwYn
o=\n'.decode('base64').decode('rot-13').replace(' DOT ', '.').replace(' AT ', '@')"