2013-10-06 1 views
0

édiT: J'ai trouvé la raison de la différence: seulement dans Visual Studio les fichiers d'entrée sont ouverts (ils ont été ajoutés à la solution et (plus important) placés dans le répertoire windows de la solution), donc ça a marché là-bas.Différent comportement-VisualStudio Débogueur sur exe

Mais quand je tente d'exécuter le fichier EXE généré, il ne lit pas les fichiers en raison de la chaîne de chemin des fichiers (travaillé dans VS) « ../fileName »

des suggestions (il travaillera en les deux cas)?

Dans le code principal:

string testFileName = "[email protected]"; //channel output file name 
string bitsFileName = "sentBits4.dat"; //original sent bits file name,NO initial zero added 

//Works in Visual Studio only 
string path = __FILE__; //gets source code path, include file name 
    path = path.substr(0,1+path.find_last_of('\\')); //removes file name 
    path1= path+testFileName; //adds input file to path 
path2=path+bitsFileName; //adds input file to path 


//Works in Application EXE only 
path1= testFileName; 
path2=bitsFileName; 
+1

Cela pourrait être dû à l'utilisation de variables non initialisées. Lors de l'exécution dans un débogueur, le débogueur efface toute la mémoire, y compris la pile utilisée par les variables locales. Cela signifie que toutes les valeurs sont nulles et que les pointeurs sont 'NULL'. Mais lors de l'exécution en dehors des débogueurs, ces valeurs sont indéfinies et souvent très aléatoires. Donc, si vous avez une vérification des pointeurs 'NULL', mais n'initialisez pas le pointeur, ce ne sera pas' NULL' et le programme utilisera ce pointeur même s'il ne pointe sur rien de ce que vous avez alloué, et vous avez un indéfini comportement. –

Répondre

1

Set "répertoire de travail" dans le débogueur Visual Studio.

Lorsqu'un projet est sélectionné dans l'Explorateur de solutions, dans le menu Projet, cliquez sur Propriétés. Cliquez sur l'onglet Déboguer. Dans le champ Répertoire de travail, entrez le répertoire à partir duquel le projet sera lancé.

+0

où je peux le changer? –

+0

Réponse mise à jour. – kotlomoy

Questions connexes