PlugScape : Fuites memoires et benchmarking C++

Description

Une petite librairie C++/GNU/Linux pour trouver bugs, fuites memoires, et pour benchmarker votre application. Disponible sous licence GPLv2 ou version ultérieure.

Les bugs sont gérés avec une approche « programmation par contrat » et avec des assertions. Les fuites memoires sont détectées avec une redéfinition des opérateurs new et delete.

Installation

Installation pour Ubuntu

  • Téléchargez le paquet deb.
  • installez plugscape : $  sudo dpkg -i plugscape_0.8-1_i386.deb

Installation à partir des source

  • Installer CMake.
  • Installer les librairies Boost et plus spécifiquement Boost Date-Time si les librairies Boost sont réparties en plusieurs paquets sur votre système d’exploitation.
  • Téléchargez les sources plugscape.
  • Après extraction allez dans le nouveau repertoire et configurez le paquet : $ cmake . .
  • Compilez le projet : $ make
  • (Optionel) Installez le avec les privilèges administrateur : $ make install or $ sudo make install . Les fichiers installés sont enregistrés dans le fichier « install-manifest.txt » si vous souhaitez les enlever ultérieurement.

Comment utiliser la programmation par contrat ?

Inclure le header plugscape :

Vous pouvez maintenant utiliser les macros suivantes dans votre code :  »INVARIANT, REQUIRE, ENSURE, ASSERT, EXPECT ».
Linkez votre programme avec la librarie libPlugScape.

compilez votre projet avec la définition  »PLUGSCAPE_CONTRACT ». Vous pourrez l’enlever pour une version finale.

Comment détecter des fuites memoires ?

Inclure le header plugscape :

Plutôt que d’alouer la memoire avec  »new », utilisez  »NEW ». À la place de  »delete » utilisez  »DELETE ».

Si vous avez déjà écrit votre code et ne voulez rien changer, vous pouvez utiliser la définition suivante :

Vous devrez cependant faire attention à ce que cette macro ne soit jamais définie avant un header standard. En utilisant cette macro, vous ne pourrez pas non plus redéfinir l’opérateur new.

Linkez votre programme avec la librarie libPlugScape.

Comment benchmarker votre application ?

Inclure le header plugscape :

placez les appels de fonctions à tester à l’intérieur d’un appel à la macro BENCHMARK.

Linkez votre programme avec la librarie libPlugScape.

Compilez votre programme avec la définition PLUGSCAPE_BENCHMARK. Vous pourrez l’enlever dans la version finale.

Comment gérer les exceptions plugscape ?

Comment facilement créer de nouvelles exceptions ?

Dans votre header insérez la ligne :

et dans votre code C++ : throw EXCEPTION(YourException); .

Pourquoi utiliser les exceptions plugscape ?

Avec plugscape, toutes les exception héritent de plugscape::RuntimeError de telle sorte qu’elle peuvent être attrappées en une seule ligne. De plus, la fonction what() aura toujours des informations utiles, comme la ligne et le fichier à l’origine de l’exception. Vous pouvez aussi configurer plugscape pour inclure la backtrace dans le message.

Démonstration

plugscape-demo

Fichier utilisé pour cette démo :

Fichiers