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

VB 6 et antérieur Discussion :

Crash VB6 lors de développement de DLL


Sujet :

VB 6 et antérieur

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 328
    Points : 695
    Points
    695
    Par défaut Crash VB6 lors de développement de DLL
    Bonjour,
    Je me tourne vers vous afin d'essayer de résoudre un petit problème avec l'IDE de VB6 qui me fait perdre environ 30min/jour lors de phases de debug:
    Je modifie sous VB6 une appli existante relativement complexe (comprendre ici "usine à gaz"), qui fonctionne avec des modules externes sous forme de DLL.
    Je m'explique: l'appli en VB6 peut appeler divers modules, certains sont internes à cette appli, d'autres (également développés en VB6) sont appelés via COM je crois.
    Afin de débugger les modules externes, je lance l'IDE VB6, j'ouvre le projet correspondant au module, je lance l'exécution (avec points d'arrêts par ex) et ensuite j'appelle ce module depuis mon appli. Jusqu'ici, pas de pb le mode debug "capture" l'appel à mon module externe.
    Cependant, lorsqu'un point d'arrêt est atteint, la fenêtre de VB6 ne peut avoir le focus et reste grisée. Je n'ai accès qu'aux commandes de debug (F5, F8, F9).
    Et si par malheur une boîte de dialogue survient (genre erreur de debug VB), c'est fini. Je dois tuer le processus du logiciel "appelant" et lorsque j'arrête le mode debug dans VB6, BAM CRASH BOUM BZZZZ CHEBAOUWW !
    Avez-vous rencontré ce pb lors de développement de modules externes VB, l'avez-vous réglé ?

    Un énorme merci d'avance à tous et bon we.

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Si tu fais appel a du sous classement de form, ca pourrait expliquer

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    Alors ...

    Je vois très bien ton problème

    Mes recommandations :

    1) désenregistrer TOUS les DLL activex exploités par l'appli principale et s'assurer qu'il n'y a plus rien à ce sujet en base de registre (important) PUIS tout réenregistrer

    2) ouvrir le projet principal, (ne pas essayer de compiler, ça ne peut plus marcher)

    3) ajouter un par un les projets correspondants aux DLL à l'instant désenregistrées et pour CHAQUE projet, vérifie qu'il référence correctement les bons projets et NON PAS les DLL. En effet, en mode debug, l'IDE affiche dans la page "références externes du projet" le titre des DLL si et seulement si les VBP de cells-ci ne sont pas ouvertes dans le VBG en cours.

    Le but est ici d'avoir tous les VBP dans le VBG, donc aucune DLL apparaissant dans les références mais bien le nom des projets.

    A chaque ajout de nouveau VBP, modifie au passage dans l'onglet "compilation" et coche la radiobox "compatibilité binaire" en spécifiant le chemin pour le coup où est écrite la DLL sur le disque dur. (partie la plus importante)

    4) Sauver le groupe de projets global (ne rien compiler)

    5) Ouvrir le VBG avec le software VisualMake, aller dans view > options,
    Break and restore compatibility = yes, retry compile with compatibility set to = Project compatibility.

    Valider, puis cliquer sur Rebuild All.

    Toute erreur bloquante dans visual make est un cas particulier, à partir de là je pourrai t'aider sur chaque message.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 328
    Points : 695
    Points
    695
    Par défaut
    Merci beaucoup pour vos réponses. Je vais tenter le coup du vbg que je ne connaissais pas et je vous dis si ça marche.
    Je suis pas super confiant car ce projet est une vraie usine à gaz qui fait appel à je ne sais combien de projets (exe, dll, ...). Certains n'étant même pas développés en vb6 (librairies de types .tlb).

    Bonne semaine

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 328
    Points : 695
    Points
    695
    Par défaut
    Bon je viens de jeter un coup d'oeil. J'ai fait un petit test pour pas perdre trop de temps.
    J'ai créé un .vbg à la main avec mon projet principal et les 2 projets (ex: vbp1 et vbp2) qui posent problème. J'ai donc lancé mon projet principal en debug en mettant un point d'arrêt dans le projet vbp1, et là pas de focus (impossible de stopper le debug, de mettre un watch, ...). Le problème persiste donc même en regroupant les vbp dans un groupe. La combinaison Shift+F5 m'a permis cependant de sortir du debug sans explosion et effusion de: 'La mémoire ne peut pas être "read"...'. Style il parle mi-français, mi-anglais lui.

    Je ne sais pas vraiment ce qu'est du sous classement de form, mais ce terme me titille un peu. En effet, les DLL appelées sont bien des form et sont appelées par l'application principale ("conteneur MDI").
    En fait, il arrive que je puisse avoir le focus sur les projets appelés mais rarement. Je n'ai pas trouvé d'explication sur ce fait (formulaire affiché, masqué, Function, Sub, point d'arrêt avant/après certains évènements, ...).
    Bref, je vais continuer avec mes crashes.

    Merci quand même car le concept de groupe de projets sous vb6 va m'aider.
    Bonne semaine

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    hum, t'es sûr que t'as fait ce que jt'ai dit ?

  7. #7
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Avec des sous classement, tu devrais avoir des adressof dans ton programme.
    I s'agit en général de faire traiter a vb des messages de fenetre qu'il ne traite pas d'habitude ou même de remplacer ces traitements de messages par des version personalisées.
    Ca perturbe pas mal l'interface de developpement.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 328
    Points : 695
    Points
    695
    Par défaut
    Merci pour vos réponses. Je n'ai pas le temps de faire toute la procédure que tu m'as donné, Vld44. J'essaierai peut être plus tard si j'ai plus de temps. En effet, il doit y avoir une dizaine voire une vingtaine de sous projets, certains dont je ne connais même pas l'existence ou l'endroit où ils sont stockés.
    Merci quand même pour ces astuces.
    A bientôt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CR 8] Crash de l'application VB6 lors de l'export en PDF d'un rapport
    Par SofianeDH dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 19/09/2009, 15h35
  2. Point d'arret inefficace lors du debugage de DLL
    Par colorid dans le forum Langage
    Réponses: 1
    Dernier message: 11/11/2007, 14h44
  3. [VB6] creer et utiliser un Dll dans VB
    Par Mirna dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 31/05/2006, 15h03
  4. [CR][VB6] PB Crviewer, apercu et DLL
    Par Job dans le forum SDK
    Réponses: 3
    Dernier message: 06/10/2004, 15h58
  5. [VB6] [Langage] VB6 et les appels de dll
    Par Dave63 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 16/01/2003, 18h20

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