IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ PureBasicConsultez toutes les FAQ

Nombre d'auteurs : 7, nombre de questions : 68, dernière mise à jour : 3 janvier 2013  Ajouter une question

 

Bienvenue dans la F.A.Q. PureBasic !

Celle-ci va tenter de répondre aux questions les plus fréquemment posées sur le langage PureBasic et tous ses outils de programmation. Si elle n'a pas pour vocation de répondre à toutes les interrogations possibles, elle reste une bonne base de connaissances sur le PureBasic, et ne demande qu'à être enrichie par vos expériences personnelles.

Bien entendu, malgré toute l'attention qui a pu être portée à cette F.A.Q., des erreurs ont toujours pu s'y glisser. Prenez donc toutes les précautions qui s'imposent avant d'essayer un exemple.

Nous vous souhaitons une bonne lecture ! Et n'oubliez pas qu'en cas de problème, vous pourrez toujours poser votre question sur le forum PureBasic !

L'équipe PureBasic de Developpez.

SommairePurificateur (1)
précédent sommaire suivant
 

Le purificateur permet de détecter plus facilement les dépassements de mémoire (buffer overflow).

Pour utiliser le purificateur, allez dans les options du compilateur, sélectionnez le deuxième onglet 'compiler/exécuter' et cochez 'Activer le purificateur'.
Vous pouvez aussi aller dans les préférences, et cochez 'Purificateur' dans 'les fenêtres par défaut' du 'débogueur'.

Dans les exemples qui vont suivre, testez les d'abord en activant uniquement le débogueur (cliquez sur le bouton 'utiliser le débogueur' dans la barre outil).
Aucun défaut vous sera signalé !
Ensuite activez le purificateur et conservé le débogueur activé, cette fois ci tous les dépassements de mémoire seront indiqués, c'est fantastique pas vrai ?

Premier exemple :

Code purebasic : Sélectionner tout
1
2
3
4
5
 
MyGlobal.l = 0 
*CrazyPointer.Long = @MyGlobal 
*CrazyPointer+1 
*CrazyPointer\l = 152 ; global data overwrite
Second exemple :

Code purebasic : Sélectionner tout
1
2
3
 
*Memory = AllocateMemory(10) 
PokeB(*Memory-1,1) ; memory bank corruption
Troisième exemple :

Code purebasic : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
 
Procedure a(directparam) 
 
  a.l = 10 
 
  *CrazyPointer.Long = @a 
  *CrazyPointer+1 
  *CrazyPointer\l = 152  ; stack corruption 
 
EndProcedure 
 
a(10)
Pensez aussi à régler le comportement du purificateur avec la commande PurifierGranularity().

Mis à jour le 6 février 2012 comtois

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.