OVH Cloud OVH Cloud

Exe qui marche depuis VS mais plante en dehors

17 réponses
Avatar
Aurélien Regat-Barrel
Bonjour,
On travail sur un projet avec une partie C++ et mes camarades se sont
démerdés pour obtenir un comportement fort curieux. Le programme réalisé
fonctionne très bien lancé depuis Visual Studio 7.1 mais plante si on le
lance "à la main", que ce soit en release ou debug.
Ca plante dans std::list, mais ça viendrait pas de là, je cherche...
Mais ça me laisse perplexe : je pensais que VS se limitait à changer le path
de l'exe à celui du projet, qu'il prenanit en main la console (pour affciher
"Appuyez sur une touche..." en fin d'exécution) mais je vois pas ce qu'il
peut faire qui modifie le comportement du progremme, apparement dans
l'allocation/destruction des objets. Une idée ?

10 réponses

1 2
Avatar
Dominique Vaufreydaz
Salut,

On travail sur un projet avec une partie C++ et mes camarades se sont
démerdés pour obtenir un comportement fort curieux. Le programme réalisé
fonctionne très bien lancé depuis Visual Studio 7.1 mais plante si on le
lance "à la main", que ce soit en release ou debug.
Ca plante dans std::list, mais ça viendrait pas de là, je cherche...
Mais ça me laisse perplexe : je pensais que VS se limitait à changer le path
de l'exe à celui du projet, qu'il prenanit en main la console (pour affciher
"Appuyez sur une touche..." en fin d'exécution) mais je vois pas ce qu'il
peut faire qui modifie le comportement du progremme, apparement dans
l'allocation/destruction des objets. Une idée ?



Bon, ca m'est deja arrive a moi... Le truc, c'est que dans visual, c'est
aussi lui qui gere l'allocation memoire pour pouvoir savoir ce qui se passe
et pas si tu lances ton exe... Perso, c'etait une merde de ma part dans
le code (je ne me souviens plus laquelle mais un truc debile qui trainait).
Tu peux voir ce genre de chose en utilisant purify, tres fort pour te
montrer que tu fais des conneries meme si ca semble marche en debug !

Sinon pense aussi que lance depuis un debugguer, la memoire est
remplie avec des 0 lors de l'allocation, pas dans les autres cas,
ca peut etre une piste aussi...

Voila. Doms.
--
Impose ta chance, serre ton bonheur et va vers ton risque.
A te regarder, ils s'habitueront.
René Char, Les Matinaux.
----
http://Dominique.Vaufreydaz.free.fr/
http://TitchKaRa.free.fr/
http://logiciels.ntfaqfr.com/
Avatar
Manuel Leclerc
Aurélien Regat-Barrel a écrit :

Le programme réalisé fonctionne très bien lancé depuis
Visual Studio 7.1 mais plante si on le lance "à la main",
que ce soit en release ou debug.



Lancé depuis VS par Ctrl+F5 ou par F5 ?
Avatar
Thierry
Bonjour,

Dominique Vaufreydaz a écrit :

Sinon pense aussi que lance depuis un debugguer, la memoire est
remplie avec des 0 lors de l'allocation, pas dans les autres cas,
ca peut etre une piste aussi...



C'est pas des 0xCD (int 3 il me semble) plutôt ?

--
« Willy, j'ai mangé le chat. »
Avatar
patrox
> On travail sur un projet avec une partie C++ et mes camarades se sont
démerdés pour obtenir un comportement fort curieux. Le programme réalisé
fonctionne très bien lancé depuis Visual Studio 7.1 mais plante si on le
lance "à la main", que ce soit en release ou debug.
Ca plante dans std::list, mais ça viendrait pas de là, je cherche...
Mais ça me laisse perplexe : je pensais que VS se limitait à changer le


path
de l'exe à celui du projet, qu'il prenanit en main la console (pour


affciher
"Appuyez sur une touche..." en fin d'exécution) mais je vois pas ce qu'il
peut faire qui modifie le comportement du progremme, apparement dans
l'allocation/destruction des objets. Une idée ?



recompile ton prog avec un autre compilateur si tu en as la possibilité, il
y a surement une fuite memoire qque part dans votre code, classique de VC.
Un autre compilo ( cw par example ) devrai planter/debugger droit dessus.

pat.
Avatar
Ambassadeur Kosh
BoundChecker de chez Numega. j'ai pas d'actions chez eux, mais ça devrait te
permettre de savoir qui (la ligne et la pile à ce moment) met de la mémoire
non allouée en référence.
Avatar
François Müller
"Aurélien Regat-Barrel" escribió en el mensaje
news:402aa974$0$28122
| "Appuyez sur une touche..." en fin d'exécution) mais je vois pas ce qu'il
| peut faire qui modifie le comportement du progremme, apparement dans
| l'allocation/destruction des objets. Une idée ?

Quel est le message d'erreur ?
Quel est le système d'exploitation ? ( 2000 SP4 par hasard ?)
Tes variables sont-elles toutes initialisées ?

F.
Avatar
Christian
Si ce n'est pas une histoire de debug / pas débug. Peut être qu'un chgt de rép courant change le comportement de
votre appli. Ou que vous avez mis quelques paramètres de lancement dans les propriétés de VS.
Avatar
Aurélien Regat-Barrel
Hello,
c'est ce que j'ai testé en 1° vu qu'effectivement on passe un fic en
paramètre. Mais je le savais ça et ça vient pas de là.


"Christian" a écrit dans le message de news:
402c23f9$0$28764$
Si ce n'est pas une histoire de debug / pas débug. Peut être qu'un chgt de


rép courant change le comportement de
votre appli. Ou que vous avez mis quelques paramètres de lancement dans


les propriétés de VS.




Avatar
Aurélien Regat-Barrel
Le message c'est mémoire qui ne peut être read je crois. WinXP Pro SP1.

Quel est le message d'erreur ?
Quel est le système d'exploitation ? ( 2000 SP4 par hasard ?)
Tes variables sont-elles toutes initialisées ?

F.




Avatar
Aurélien Regat-Barrel
Ca plante dans std::list, mais ça doit venir d'ailleurs.
J'avais déjà mis en commentaire un delete qui faisait planter, j'en suis
resté à isoler le code infulençant le plantage sur le new associé...


"Ambassadeur Kosh" a écrit dans le message de
news: c0g6or$km1$
BoundChecker de chez Numega. j'ai pas d'actions chez eux, mais ça devrait


te
permettre de savoir qui (la ligne et la pile à ce moment) met de la


mémoire
non allouée en référence.




1 2