Programme plante seulement la version build — comment déboguer?

J'ai un "Chat de Schroedinger" type de problème ici -- mon programme (en fait de la suite de test pour mon programme, mais un programme d'ailleurs) est en panne, mais seulement lors de sa construction en mode release, et seulement lorsqu'il est lancé à partir de la ligne de commande. Par le biais de l'homme des cavernes de débogage (c'est à dire, méchant printf() messages dans tous les sens), j'ai déterminé la méthode de test où le code est en panne, mais malheureusement, la réelle crash semble se produire dans certains destructeur, depuis la dernière trace des messages je vois dans d'autres destructeurs qui exécuter proprement.

Lorsque je tente de l'exécuter ce programme à l'intérieur de Visual Studio, il ne plante pas. En va de même lors du lancement de WinDbg.exe. Le blocage se produit uniquement lors du lancement de la ligne de commande. Ce qui se passe sous Windows Vista, btw, et, malheureusement, je n'ai pas accès à une machine XP dès maintenant pour tester.

Il serait vraiment bien si je pouvais obtenir Windows pour imprimer une trace de la pile, ou quelque chose autres que de simplement terminer le programme comme si elle avait quitté proprement. Quelqu'un aurait-il des conseils sur comment je pourrais obtenir plus de renseignements utiles ici et nous espérons résoudre ce bug?

Edit: Le problème a effectivement été causé par un hors des limites d'un tableau, que je décrirai plus dans ce post. Merci à tous pour votre aide dans la recherche de ce problème!

  • Pouvez-vous donner un exemple de cette méthode de test?
  • Non désolé, le code est beaucoup trop complexe pour être facilement coller ici, et comme je l'ai mentionné, il n'est pas le cas dans la méthode d'essai lui-même, mais plutôt un destructeur par la suite. Il n'y a pas de pointeurs non initialisés ou quelque chose comme ça dans cette méthode, bien que.
  • La plupart des réponses ne sont guère plus que des suppositions. Il existe quelques techniques pour l'analyse de s'écraser les versions release sans y attacher un débogueur: stackoverflow.com/a/18513077/214777?stw=2
  • C'est peut-être pas de votre faute: Est l'optimisation de niveau -O3 dangereux dans g++?
InformationsquelleAutor Nik Reiman | 2008-10-09