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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[debug] Problème hallucinant


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Par défaut [debug] Problème hallucinant
    Bonjour,

    Je suis etudiant en informatique et apres un petit moment a faire du xml, java, ... ; je me suis un remit dans mes codes C qui fonctionnaient plutot bien dans mes souvenirs mais qui ne fonctionne plus en partie et la raison .... un appel de fonction qui fonctionne seul mais pas dans une boucle de test avec une fonction de delay

    Pour essayer de clarifier les choses, j'ai simplifier le code pour tester pas a pas et remonter a mon code original débugé et la, j'ai un code plus simple que du Hello world qui ne fonctionne pas !

    voici ce code :
    j'ai remplacé l'appel de fonction par le printf * , le delay par une boucle bidon et les valeurs de la boucle ne sont plus des variables de mon programme mais des entiers tous simples

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	int t, i = 0;
    	//
    	for (t=0; t<100; t++)
    	{
    		printf("*");
    		i = 0;
    		do
    		{
    			i++;
    		}
    		while(i < 1000000);
    	}
    a l'execution : un peu d'attente et toutes les * d'un coup !!!

  2. #2
    Membre chevronné
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Par défaut
    Salut,

    Je peux me tromper mais je pense que c'est une question de buffer. En effet printf possède un buffer, et n'affiche pas instantanément à la différence de fprintf. Essaie d'ajouter un flush apres ton printf.

    Autre chose: a ta place j'utiliserai wait() plutot qu'une boucle si tu souhaite ralentir ton execution

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Citation Envoyé par 0xNoob Voir le message
    a l'execution : un peu d'attente et toutes les * d'un coup !!!
    C'est effectivement dû aux buffers de lignes : par défaut, la sortie standard n'est envoyée vers sa destination finale que lorsque tu écris un retour à la ligne ou que tu refermes le fichier. Il existe setbuf() pour modifier ce comportement.
    Sache également que la sortie d'erreur standard, elle, n'est pas bufferisée.

    Citation Envoyé par Malinaka Voir le message
    Salut,
    Je peux me tromper mais je pense que c'est une question de buffer. En effet printf possède un buffer, et n'affiche pas instantanément à la différence de fprintf. Essaie d'ajouter un flush apres ton printf.
    Pas flush() mais fflush() (File Flush).

    Autre chose: a ta place j'utiliserai wait() plutot qu'une boucle si tu souhaite ralentir ton execution
    Pas wait() non plus (qui sert à attendre la fin d'un processus fils) mais sleep().

  4. #4
    Membre chevronné
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Par défaut
    Exact , autant pour moi

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2013
    Messages : 31
    Par défaut
    Merci pour vos réponses.

    Ce detail de buffer m'était completement sorti de l'esprit lol
    le fflush(stdout) fonctionne

    si ca vous interesse en fait la fonction (a la pacle de printf'("*") ) sert a afficher une barre de progression

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Inspection des variables en debug - problème
    Par Pocus dans le forum EDI
    Réponses: 10
    Dernier message: 08/12/2017, 15h31
  2. Réponses: 0
    Dernier message: 29/12/2010, 12h00
  3. PDT plugin Eclipse Debug problème
    Par progamer54 dans le forum Eclipse PHP
    Réponses: 5
    Dernier message: 31/10/2009, 01h39
  4. [Visual Studio 2005 Debug]Problème de debug
    Par Astraya dans le forum Visual Studio
    Réponses: 1
    Dernier message: 12/02/2009, 10h53
  5. [Debug]Problème d'arrêt
    Par le Daoud dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 02/06/2005, 20h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo