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 ?

7 réponses

1 2
Avatar
Aurélien Regat-Barrel
Lancé via la petite flèche (donc avec debug). Je sais pas si j'ai testé sans
debogage.

"Manuel Leclerc" a écrit dans le message de
news:
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
Aurélien Regat-Barrel
Je crois que c'est 0x0 pour le tas, 0xCCCCCCCC pour le stack.


"Thierry" a écrit dans le message de news:

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
Aurélien Regat-Barrel
> 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 !



J'avais misle doigt sur un pblm d'allocation, plantage inexpliqué sur un
delete. Apres quelques tests j'en étais arrivé à penser que le new associé
était à l'origine du plantage. Un de mes gars qui bosse (et a pondu) sur ce
code m'a dit avoir trouvé le bug, ce serait un truc tout con. C'est pas tant
le bug qui m'intriguais mais le fait que depuis VC++ il y ait un
comportement différent d'une exécution simple, même en release.

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...



J'ai pris garde de tester en release. Lundi je saurais d'où venait l'erreur.

Voila. Doms.



Merci. A+
Avatar
Manuel Leclerc
Aurélien Regat-Barrel a écrit :

> Manuel Leclerc a écrit :

> 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 ?

Lancé via la petite flèche (donc avec debug). Je
sais pas si j'ai testé sans debogage.



Quand il y a une bug dans la gestion mémoire d'une
application, le bug peut passer, ou pas, innaperçu
suivant le contexte d'exécution. Quand tu lances un
process sous debugger, il y a quelques petites différences
dans le contexte d'exécution. Je crois que ton appli est
bugée, désolé.
Avatar
Aurélien Regat-Barrel
Resalut,
c'était bien un truc tout con, une maivaise taille de new.
Lancé depuis VC++, il doit allouer pas mal plus que ce qui est demandé d'où
pas de plantage.
Sorti de là, crac boum me voilà ici.
Avatar
erickissim
"Aurélien Regat-Barrel" wrote in
news:4032c8d3$0$27984$:

Resalut,
c'était bien un truc tout con, une maivaise taille de new.
Lancé depuis VC++, il doit allouer pas mal plus que ce qui est demandé
d'où pas de plantage.
Sorti de là, crac boum me voilà ici.





en generale on les detecte au delete !

tu ne delete pas ?

erickissim
Avatar
Aurélien Regat-Barrel
> en generale on les detecte au delete !

tu ne delete pas ?



Exact, ça plantait sur le delete. J'avais identifié un pblm mais pensais
qu'il venait d'ailleurs. J'avais repoussé ça à + tard, et commenté les
delete vu qu'apparement les new étaient ok. Sauf que il fallait un <= au
lieu d'un < dan sur for...
1 2