[C] Bout de code fonctionne avec gdb mais pas en vrai [Résolu]

Bout de code fonctionne avec gdb mais pas en vrai [Résolu] [C] - C - Programmation

Marsh Posté le 31-08-2013 à 17:35:13    

Bonjour,
 
Je me tourne vers vous parce que je suis un peu bloqué.  
 
J'ai un petit bout de code qui fonctionne lorsque je fais tourner avec gdb mais ne fait pas du tout ce qu'il devrait quand je lance l'appli directement. Le bout de code est tout simple.  
 

Code :
  1. static void dbg_file_write(gchar * debug_input);
  2. static void dbg_file_write(gchar * debug_input){
  3.     FILE * fp;
  4.     char * filename = "/tmp/monfichier.dbg";
  5.     fp = fopen(filename, "a+" );
  6.     if (fp) {
  7.         g_fprintf(fp, "%s\n", debug_input );
  8.         fclose(fp);
  9.     }
  10. }


 
Et je fais mes appels a cette fonction comme ci dessous :
 

Code :
  1. gchar * dbg_text = "Mon Texte";
  2.                 dbg_file_write(dbg_text);


 
Lorsque je lance l'apppli avec gdb, j'ai bien mes entrées dans le fichier qui va bien mais pas du tout en vrai.  
 
Est ce que quelqu'un aurait une explication du pourquoi du comment ?  
 
Merci d'avance.


Message édité par kisscoolz le 31-08-2013 à 21:35:12

---------------
http://lacabanedeladmin.trickip.net/
Reply

Marsh Posté le 31-08-2013 à 17:35:13   

Reply

Marsh Posté le 31-08-2013 à 21:33:51    

Je viens de comprendre comment le faire marcher. En fait en etant dans le répertoire courant si je lance le programme avec  
 

$ monprogramme


 
ca ne prends pas en compte ce que le lui demande, par contre si je le lance de cette facon
 

$ ./monprogramme


 
ca fait ce que je veux.  
 
Je vois pas pourquoi ca fait ca mais j'arrive a le faire fonctionner. :)
 
Voila sujet résolu.


---------------
http://lacabanedeladmin.trickip.net/
Reply

Marsh Posté le 31-08-2013 à 22:47:07    

Bonsoir !
 
Je pense que vous avez deux fichiers "monprogramme", un qui est quelque part dans le PATH et l'autre dans votre répertoire courant.
 
Par défaut, le répertoire courant n'est pas dans le PATH et "monprogramme" ne lance pas l'exécutable qui est dans le répertoire courant, mais lance une recherche dans tout les répertoires du PATH pour voir si un tel programme, qui plus est qui a les droits d'exécution, existe et lance le premier qu'il trouve, au contraire de "./monprogramme" qui est beaucoup plus explicite.
 
Vous pouvez le vérifier avec la commande "which" : "which monprogramme" devroit vous indiquer quel exécutable est vraiment lancé par la première commande.
 
Bonne continuation !

Reply

Marsh Posté le 02-09-2013 à 16:23:34    

Merci pour l'explication.  
 
C'est effecivement quelque chose qui est possible. J'avais une version précédente qui était installée dans mon système et une version dans son propre répertoire.  
 
Je vérifierais chez moi mais ca me parait plausible. :)


---------------
http://lacabanedeladmin.trickip.net/
Reply

Marsh Posté le 04-09-2013 à 15:20:32    

Je crois qu'on peut valider l'hypothèse du dessus. En effet, après installation de la nouvelle version de mon programme, celui ci fonctionne en le lançant juste avec "monprogramme".  
 
Mystère résolu.


---------------
http://lacabanedeladmin.trickip.net/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed