Page 1 sur 1

Role de l'option Purifier dans la compilation d'un code ?

Publié : mar. 17/mai/2011 13:23
par falsam
La question est dans le titre de ce post.

Re: Role de l'option Purifier dans la compilation d'un code

Publié : mar. 17/mai/2011 13:30
par Backup
je pense que Fred fait parti de la Scientologie :roll: :lol:

PurifierGranularity(VariablesGlobales, VariablesLocales, ChainesDeCarateres, BlocsDynamiques)
Description

Modifie l'intervalle de vérification d'intégrité des données du purificateur. Chaque valeur représente le nombre de lignes qui sont exécutés entre chaque type de vérification. La valeur #PB_Ignore ne changera pas la valeur courante. Une valeur de zéro desactivera complètement la vérification.
Exemple:

; Disable check for string memory and check allocated memory every 10 lines
PurifierGranularity(#PB_Ignore, #PB_Ignore, 0, 10)

OS Supportés

Tous
*


de memoire, il me semble que le purifier est un observateur de ligne de code utilisées ...

ça te fait ressortir les lignes de code le plus souvent utilisée
ça permet de savoir quelle partie de code bouffe du temps par exemple :)

[reedit] ha non , ça c'est le profiler !! :roll:

Re: Role de l'option Purifier dans la compilation d'un code

Publié : mar. 17/mai/2011 14:51
par Fred
C'est pour detecter plus facilement les dépassement de memoire (buffer overflow).

Re: Role de l'option Purifier dans la compilation d'un code

Publié : mar. 17/mai/2011 15:32
par falsam
Fred et Dobro merci pour vos réponses.
Fred a écrit :C'est pour detecter plus facilement les dépassement de memoire (buffer overflow).
A part cocher la case adéquate je ne comprends pas comment mettre cette fonctionnalité en oeuvre. Ou voit on le résultat par exemple.

Re: Role de l'option Purifier dans la compilation d'un code

Publié : mar. 17/mai/2011 17:09
par comtois
un exemple (de Fred) pour tester :

Code : Tout sélectionner

Structure MyPoint
  x.i
  y.i
EndStructure

Procedure a(directparam)

  a.l = 10
  c.b = 1
  Point.MyPoint
 
  a$ = "Fred"
 
  *Memory = AllocateMemory(10)
  PokeB(*Memory-1,1) ; memory bank corruption
 
  *CrazyPointer.Long = @a
  *CrazyPointer+1
  *CrazyPointer\l = 152  ; stack corruption

EndProcedure


MyGlobal.l = 0
SmallGlobal.b = 1
SmallGlobal2.w = 1
MyGlobalPoint.MyPoint

*CrazyPointer.Long = @MyGlobal
*CrazyPointer+1
*CrazyPointer\l = 152 ; global data overwrite

a(10)
Lance le code une première fois sans activer le purifier, aucun défaut signalé.
Lance le code une seconde fois en activant le purifier (Dans les options du compilo , (Dans le 2ème onglet), tu auras un défaut.

Re: Role de l'option Purifier dans la compilation d'un code

Publié : mar. 17/mai/2011 20:34
par Chris
Salut Comtois, tu te fais rare ces temps-ci!

Content de te revoir trainer dans le coin :wink:

Re: Role de l'option Purifier dans la compilation d'un code

Publié : mar. 17/mai/2011 21:47
par falsam
@comtois : Merci pour ce code qui m'a bien montré l'intérêt du purifier.