IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Debug d'un exe lanc� par la fonction system()...


Sujet :

MFC

  1. #1
    Membre r�gulier
    Inscrit en
    F�vrier 2005
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2005
    Messages : 8
    Par d�faut Debug d'un exe lanc� par la fonction system()...
    Slt,

    Cette question s'adresse aux sp�cialistes de visual c++ 6.0 (le vieux)...
    J'ai un workspace qui contient plusieurs projets (dll et exe).

    Lors du debug d'un exe, je peux aussi debugger les dll attachees (je veux dire ke si je mets un bp dans le source d'une des dll il sera actif), jusque la, pas de pb.

    Par contre, la plupart de mes exe lancent d'autres exe du projet (avec la fonction system()). Et la c'est l'echec : un bp dans le source d'un exe appell� est desactive par visual lorsque je lance la session de debug sur l'exe appelant.
    Precision : tous les pdb sont dans le meme dossier et il y a vraiment bcp d'exe donc la solution de lancer un autre visual et d'attacher le process n'est pas vraiment envisageable.

    La kestion est donc : est il possible de faire en sorte que tous les bps de tous les projets d'un workspace restent actifs ?

    Question subsidiaire pour les pros de purify ce coup ci : de la m�me mani�re, y a t 'il moyen de purifier aussi les exe appeles depuis un autre exe ???

    Thx

  2. #2
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    en dehors du fait qu'il est preferable d'utiliser shellexecute que systeme (
    librairie C ) pour lancer un autre programme .
    je ne pense pas que tu puisses continuer a debuger dans l'autre process.
    et donc les breaks points ne suivent pas ...

  3. #3
    Membre r�gulier
    Inscrit en
    F�vrier 2005
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2005
    Messages : 8
    Par d�faut
    Ok, thx pour le ShellExecute(), mais effectivement, ca ne r�gle pas mon pb...

  4. #4
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Tu peux essayer CreateProcess avec le flag DEBUG_PROCESS d�s fois que...
    Sinon tu peux tenter de faire un _CrtDbgBreak ou assert(0) puis ignorer au d�but de ton WinMain pour forcer l'ouverture d'une nouvelle session de d�bogage sur l'exe lanc�.

  5. #5
    Membre r�gulier
    Inscrit en
    F�vrier 2005
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2005
    Messages : 8
    Par d�faut
    Oui, le CreateProcess avec le flag DEBUG_PROCESS, ca ne me semble pas adapt� (d'apr�s ce que j'ai compris, il faudrait que je g�re les evts de debug dans mon prog appelant... a moins que ce ne soit possible de les rediriger vers visual)

    Pour le assert, c'est une bonne id�e, merci. C'est pas exactement ce je voulais, mais c'est toujours mieux ke de lancer un visual et d'attacher le process a la main.
    Seul pb, quand je debugge, il ne me mets pas les sources de mon prog... mais de l'assebleur (ca doit vaguement etre les sources de la msvcrt qu'il me fait debugger)
    Enfin, je vais regarder ca de plus pres.

    Thx.

  6. #6
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Ben en y r�fl�chissant, vu que tu as un projet par exe, �a me parrait difficile de d�boguer plusieurs projets avec la m�me instance de VC++. C'est pourquoi je pense qu'il faut autant de VC++ ouverts que d'exe � d�boguer.

  7. #7
    Membre r�gulier
    Inscrit en
    F�vrier 2005
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2005
    Messages : 8
    Par d�faut
    Oui, m�me avec la fonction assert, il m'ouvre un nouveau visual pour le debug. Mais il s'ouvre tou seul :-)

    Bref, c'est mal parti cette histoire...

    Pour le fait qu'il m'ouvre pas les sources, est ce que ca peut etre du au fait que tous les exe (plus un paquet de dll) partagent le meme dossier de sortie ?

  8. #8
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    moi a part dire je debug sur l'appli principal ,
    et j'ouvre une autre instance de visual dont j'attache le debugger au nouveau process lancer .
    je vois pas comment tu peux faire autrement .

  9. #9
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Je sais pas si tu as compris ce que je voulais dire : le debugger il peut suivre que un seul process � la fois. Normal : les registres, le pas � pas, etc... tout �a est sp�cifique � 1 process. Il te faut ouvrir autant de VC++ que tu as d'exe � d�boguer.
    Mais question b�te : si tu le lances depuis system(), il est tr�s facile de faire pareil depuis le debuger en donnant les arguments que tu veux en ligne de commande. Quelle diff�rence entre
    - lancer depuis system dans une autre appli
    - bricoler pour ouvrir VC++ et c�er une session de d�bogage
    et
    - lancer en debug directement depuis VC++
    � part la simplicit� de la 2� ?

  10. #10
    Membre r�gulier
    Inscrit en
    F�vrier 2005
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2005
    Messages : 8
    Par d�faut
    Je sais pas si tu as compris ce que je voulais dire : le debugger il peut suivre que un seul process � la fois. Normal : les registres, le pas � pas, etc... tout �a est sp�cifique � 1 process. Il te faut ouvrir autant de VC++ que tu as d'exe � d�boguer.
    Mais question b�te : si tu le lances depuis system(), il est tr�s facile de faire pareil depuis le debuger en donnant les arguments que tu veux en ligne de commande. Quelle diff�rence entre
    - lancer depuis system dans une autre appli
    - bricoler pour ouvrir VC++ et c�er une session de d�bogage
    et
    - lancer en debug directement depuis VC++
    � part la simplicit� de la 2� ?
    Si, j'ai bien compris.

    Par contre, je ne peux pas lancer directement la plupart des exe. L'architecture du soft est assez compliqu�e (je ne la ma�trise pas du tout pour l'instant).

    Pour faire simple, c'est du client/serveur.
    On a 1 exe principal qui va lire des variables d'environnement et analyser la structure des dossiers (entre autres choses) puis lancer en fonction de ca des exe serveur ou client.

    Maintenant, du cot� client par ex., l'exe principal d�finit un contexte d'ex�cution sans lequel les exe clients ne peuvent pas se lancer.

    Je peux pas en dire bcp plus vu la ma�trise que j'ai pour l'instant sur le code.

    Sinon, y a t'il un inconv�nient � ce que tous mes projets aient le m�me dossier de sortie pour le debug (pareil, apparement visual stocke des infos dans un vc60.pdb, qui du coup est ecras� � chaque compil de projet) ?

  11. #11
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Mieux vaut avoir chacun son debug. Ca n'emp�che pas de cr�er l'exe ailleurs que dans le debug.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. mon processus cmd.exe n'est pas bien configur� lorsqu'il est lanc� via la fonction system()
    Par Glavio dans le forum Programmation et administration syst�me
    R�ponses: 5
    Dernier message: 20/04/2012, 10h01
  2. blocage de mon exe lanc� par matlab
    Par membreComplexe12 dans le forum MATLAB
    R�ponses: 1
    Dernier message: 21/06/2011, 15h27
  3. lancement de deux ( ou n) process en background par la fonction system()
    Par Mokhtar BEN MESSAOUD dans le forum Biblioth�que standard
    R�ponses: 8
    Dernier message: 04/01/2008, 18h34
  4. Processus lanc� par la commande system
    Par vinzzzz dans le forum POSIX
    R�ponses: 3
    Dernier message: 11/12/2007, 20h33
  5. R�ponses: 13
    Dernier message: 09/04/2007, 13h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo