[win32] easy debug

Soyez le premier à donner votre avis sur cette source.

Vue 6 608 fois - Téléchargée 148 fois

Description

Bon, ce code est assez leger, mais bon, il sert.
Je l'ais écris car j'en avais marre de devoir taper a chaque fois MessageBox(etc...) pour chaque string, ou alors 5/6 lignes pour un etat booleen.
Donc il suffit d'inclure un .cpp et on utilise une commande Debug qui supporte les char*, les int et les bool, libre a vous de le completer, je me ferai une joie de le rajouter dans ce cpp.

Bien sur ce code est peu commente, vous comprenez pourquoi ;-), et il ne sert a rien pour les applications console car un simple printf suffit.

Source / Exemple :


//DebugFacile.cpp

#include "stdafx.h"
#include <stdlib.h>

void Debug(char* Message)
{
	MessageBox(NULL,Message,"Easy Debug",MB_OK);
}

void Debug(int Nombre)
{
	char* Message;
	Message = new char[6];
	itoa(Nombre,Message,10);
	MessageBox(NULL,Message,"Easy Debug",MB_OK);
	delete[] Message;
}

void Debug(bool Boolean)
{
	char* Message;
	if(Boolean == true){
		Message = new char[7 + 4 + 1]; // = len("Etat = ") + len("true") + le \0
		strcpy(Message,"Etat = true");
	}
	else{
		Message = new char[7 + 5 + 1]; // = len("Etat = ") + len("false") + le \0
		strcpy(Message,"Etat = false");
	}

	MessageBox(NULL,Message,"Easy Debug",MB_OK);
	delete[] Message;
}

void Debug(char* Objet,char* String)
{
	char* Message;
	
	Message = new char[strlen(Objet) + 3 + strlen(String) + 1];
	strcpy(Message, Objet);
	strcat(Message," = \"");
	strcat(Message,String);
	strcat(Message,"\".");

	MessageBox(NULL,Message,"Easy Debug",MB_OK);
	delete[] Message;
}

void Debug(char* Objet,int Nombre)
{
	char* Message;
	char* temp;
	
	temp = new char[6];
	itoa(Nombre,temp,10); //Transforme un nombre en un char*
	
	Message = new char[strlen(Objet) + 3 + strlen(temp)+1]; // = len(Objet) + len (" = ") + len(temp) + le \0
	strcpy(Message,Objet);
	strcat(Message," = ");
	strcat(Message,temp);
	
	MessageBox(NULL,Message,"Easy Debug",MB_OK);
	
	delete[] Message;
	delete[] temp;
}

void Debug(char* Objet,bool Etat)
{
	char* Message;
	
	if(Etat == true){
		Message = new char[strlen(Objet) + 3 + 4 + 1]; // = len(Objet) + len (" = ") + len("true") + le \0
		strcpy(Message,Objet);
		strcat(Message," = true");
	}
	else{
		Message = new char[strlen(Objet) + 3 + 5 + 1]; // = len(Objet) + len (" = ") + len("false") + le \0
		strcpy(Message,Objet);
		strcat(Message," = false");
	}

	MessageBox(NULL,Message,"Easy Debug",MB_OK);

	delete[] Message;
}

Conclusion :


Je vous vois venir avec vos : Pourquoi t'a mis strcat au lieu de sprintf ?
Réponse simple, moins il y a de librairie mieux c'est, donc, comme strlen m'étais indispensable, ben j'ai utilisé les commandes de string.h comme ça ya pas de stdio.h ;-). Et de 2, la vitesse n'a içi aucun interet car MessageBox bloque le processus.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

ouais mais mieux vaut le préciser, tout ça devrait etre concentrer en une bible, je vais y travailler en meme tps que recuperer tout les types de messages windows, les api usuelles, les prototype des callbacks, en gros tout ce qui peux nous faire developper plus vite !!
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Sans blagues Wina!? On s'en serait douté, tout cela est très logique
Messages postés
2
Date d'inscription
samedi 20 août 2005
Statut
Membre
Dernière intervention
21 août 2005

On gagne forcement en vitesse avec les inlines.
Raison;
En principe les fonctions en ligne(inline) ne provoquent aucun debranchement du microprocesseur vers la zone memoire geree par l'instance du debuggeur.
On gagne donc en vitesse a coup sur !
But :
Il s'agit d'optimiser la vitesse d'execution des sous programmes en developpant directement le code a l'endroit ou est appelee la fonction.
At-t-tention :
L'usage execssif de fonctions en ligne provoque une augmenetation rapide des ressources memoire et de la taille de l'instance(dump) portable excutable, c'est a dire l'exe final lui meme.
Messages postés
540
Date d'inscription
dimanche 29 décembre 2002
Statut
Modérateur
Dernière intervention
13 mai 2011

On utilise géénralement les MessageBox quand on ne peut pas être en mode Debug (mode Release, PDA etc...).
Je pense qu'il est plus qu'indispensable d'utiliser OutputDebugString en mode Debug, ne serait-ce que pour travailler plus vite.

Au niveau du code, j'aurai centralisé les appels à une fonction qui s'occupe du MessageBox.

Sinon il y a des new inutiles mais ça a déjà été dis plus haut ^^

Ca reste une initiative pas trop mal ^^.
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

lol je voulais dire l'inverse ..., je dois vraiment avoir la tete dans le ***
Afficher les 16 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.