Variable en memoire

Signaler
Messages postés
10
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
21 décembre 2004
-
Messages postés
38
Date d'inscription
jeudi 17 juillet 2003
Statut
Membre
Dernière intervention
16 février 2005
-
voila,
j'aimerai trouver une méthode pour retrouver en memoire une variable ( ex pointeur sur une liste chainee) quand mon programme plante ( c sous linux debian).

Le truc serais de reprendre une update dans ma base de donnee mysql quand l'appli redémarre, comme c'est des tarifs d'appels :/.

Je ne sais pas si c jouable mettre par ex l'adresse memoire dans un fichier , y a t il des bonnes méthodes ? ( apparemetn c pas torp souhatable j ecrive/lise dans un fichier mes donnee a la voléee avnt les update pour quest perf c mieux avoir en memoire)

merci

5 réponses

Messages postés
10
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
21 décembre 2004

j 'ia oublié de préciser je travaille en c
Messages postés
232
Date d'inscription
vendredi 9 janvier 2004
Statut
Membre
Dernière intervention
8 janvier 2005

quand ton programme plante, le noyau envoi un signal (SIGSEGV par exemple ), et provoque la destruction du processus et de son espace d'adressage. L'espace d'adressage du processus n'etant plus de ce monde, tu as beau avoir l'adresse d'une variable, cela ne te servira à rien.
Sauf si au plantage, ton système te génère un core qui contient notament une copie de l'espace d'adressage (au moment du plantage). Tu peux donc retrouver une variable dont tu avais l'adresse avec le core je pense.

Ceci dit je ne comprend rien à ce que tu veux faire ...
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

et si tu t'aide de gdb en précisant -ggdb au compilo? avec le core généré lors du plantage tu pourra tout remonter je crois
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Faut pas utiliser çà pour bidouiller la reprise des mises à jour, faut débugger ton code (s'il plante y'a une raison, et si tu le lances avec GDB tu sauras où il a planté, faudra chercher la raison ensuite)...
Messages postés
38
Date d'inscription
jeudi 17 juillet 2003
Statut
Membre
Dernière intervention
16 février 2005

entièrement d'accord avec Nebula. C'est ton appli qu'il faut debugger.

Si vraimant tu veux recupèrer des données, tu peux toujours détourner le signal SIGSEGV (je sais pas si on à le droit ??) et avant que ça plante tu remplis un fichier texte les données que tu veux conservé. (C'est vraimant pas beau et comme dit plus_plus_fab ) regarde plutot le fichier core

Ce sont les tonneaux vides et les hommes pleins qui font le plus de bruit
:big)