2010-11-10 2 views
0

Je suis en grande difficulté. S'il vous plaît aider. J'ai créé un jeu pour mon client. Cela fonctionne correctement lorsque je l'exécute à partir de Visual Studio 2008 (à la fois dans la version et la configuration de débogage). Mais quand j'exécute son exe autonome (ou que je fais un projet d'installation), ça ne marche pas très bien. Cela fonctionne mais cela ne fonctionne pas complètement, et le problème est constant (il montre le même problème à chaque fois, quand je compile et exécute stand alone exe). J'ai eu ce problème dans le passé mais heureusement je l'ai résolu. La façon dont ce problème a été résolu est très inhabituel: - Tout fonctionnait parfaitement bien et j'ai apporté quelques modifications au code. le même comportement inhabituel que décrit ci-dessus. Puis j'ai commencé à annuler les modifications dans le code un par un. Le jeu a commencé à fonctionner parfaitement lorsque j'ai supprimé une variable particulière d'une classe et il utilise. Ensuite, j'ai vérifié toutes les règles C++ et tout, mais n'a trouvé aucun problème dans mon implémentation.Même tout fonctionnait bien quand je cours du Visual Studio. Mais j'avais besoin de cette variable et de ses utilisations dans le jeu pour certaines fonctionnalités du jeu. Donc, à cette époque, j'ai déclaré la variable dans PUBLIC (auparavant c'était une variable protégée) et tout fonctionnait parfaitement bien.Le programme se comporte anormalement lorsqu'il est déployé

Je suis très surpris de voir ce comportement inhabituel, chaque fois que je déclare la variable comme PROTÉGÉE il y a un problème mais si je copie et collez dans le public le problème est résolu (la variable est seulement utilisée dans la classe où elle est déclaré donc il ne devrait y avoir aucun problème).

S'il vous plaît aidez-moi Je reçois à nouveau ce problème inhabituel et ne recevant aucune solution pour le moment.

Dites-moi ce qui peut causer ce problème. Merci Tarun

+2

Vous n'avez pas décrit le problème? –

+1

Quel est exactement le problème que vous rencontrez sur la machine client? est-ce un accident ou quelque chose d'autre? – Naveen

+0

"ne fonctionne pas complètement bien" n'est pas quelque chose que j'appellerais une description de problème utile. –

Répondre

1

La modification de la visibilité des variables membres peut potentiellement modifier la disposition de la classe, car C++ définit uniquement un ordre dans les sections de visibilité, et non entre elles. Peut-être que votre changement brise un code qui n'est pas recompilé par votre projet.

+0

oui .. cela ressemble à l'explication la plus probable avec les informations fournies par OP. – Naveen

2

Si cela se produit en dehors du débogueur, mais pas dans le débogueur, vous pouvez être en mesure de le reproduire en utilisant la variable d'environnement _NO_DEBUG_HEAP, tel que décrit ici (entre autres): http://blogs.msdn.com/b/larryosterman/archive/2008/09/03/anatomy-of-a-heisenbug.aspx

cette variable devrait faire la Le programme exécuté sous le débogueur se comporte plus comme le programme s'exécutant en dehors du débogueur.

Vous pouvez définir des variables d'environnement dans Visual Studio, donc elles ne touchent que le processus débogué: How do I set specific environment variables when debugging in Visual Studio?

+0

Je ne parviens pas à résoudre ce problème. Aidez-moi, s'il vous plaît!!! Comment puis-je imiter la même condition que sous l'IDE. – user440607

+0

Avez-vous essayé la susdite? Ou attacher au processus, comme d'autres l'ont suggéré? En dehors de ceux-ci, il est difficile de fournir des suggestions spécifiques. Heureusement, alors que ce genre de bug peut être difficile à isoler, le correctif est généralement très simple. –

+0

C'est génial, je ne savais pas à ce sujet! – djeidot

0

Je résolu ce problème. C'était vraiment très très difficile de trouver la solution. J'écris ici comment suivre ce genre de bugs. Quelques étapes que vous devriez essayer en premier: - 1) Ne pas ignorer les avertissements du compilateur. Supprimer tous les types d'avertissements. 2) Programme pour écrire les états de la variable dans un fichier près de la partie critique de votre programme où vous avez un doute qui cause une erreur. Écrivez les états à chaque étape. Examin la Variable, vous pouvez trouver quelques variables d'initialisation ou type incorrect cast ou comarison.

Conclusion: 1) Éviter toute coparison (égale à la comparaison) avec les valeurs à virgule flottante. 2) Si vous faites une comparaison basée sur le temps, assurez-vous de vous en soucier complètement. 3) Ce Microsoft People n'est pas un dieu.

+0

vous ne devriez pas comparer les flotteurs sur l'égalité, mais moins ou plus ou une gamme de comparaison sont très bien. –

Questions connexes