2016-06-14 1 views
9

J'ai un projet DLL COM, et je suis capable de le déboguer (arrêt aux points d'arrêt) dans Delphi 2007 et XE8.Delphi 10 Seattle et 10,1 Berlin pas en mesure de déboguer COM DLL

Cependant, il ne semble pas possible que l'IDE s'arrête aux points d'arrêt dans Delphi 10 Seattle ou 10.1 Berlin.

Mes étapes de mise au point:

  1. Modification DEBUG (et vérifier les options de débogage tic tac par exemple débogage d'informations).

  2. regsvr32 la DLL de projet sous le répertoire de sortie

  3. d'écriture un script vbscript qui crée simplement l'objet COM et appelle sa méthode

  4. dans le débogage er, définir une ligne de commande à l'aide de c:\windows\syswow64\cscript.exe 32 bits ou c:\windows\system32\cscript.exe 64 bits débogage

  5. Run définir le paramètre de ligne de commande pour exécuter le vbscript.

  6. Définissez un point d'arrêt à la méthode appelée.

  7. Hit F9

attendu: arrêter au point d'arrêt

Dans Delphi 2007 et XE8, tout est OK, mais je ne pouvais le faire à Delphes Seattle ou Berlin.

Qu'est-ce qui pourrait mal tourner ici? Y at-il des paramètres que je dois activer/désactiver afin de déboguer la DLL COM sous les dernières versions IDE de Delphi?

+1

Bonne question, mais pas si facile de répondre. Pourrait être un bug. –

+1

Générez un rapport avec Embarcadero sur [Quality Portal] (http://quality.embarcadero.com). –

Répondre

1

Il semble que ce soit un problème de l'IDE. J'ai soulevé le problème dans JIRA: https://quality.embarcadero.com/browse/RSP-14964

Je trouve enfin une solution de rechange dans mon cas.

Je dois appuyer sur F8 au lieu de F9. Dans ce cas, la fenêtre de la CPU apparaîtra avec des instructions mixtes Pascal et Assemblage, et si vous appuyez sur F9, elle s'arrêtera probablement aux points de rupture (cependant, un comportement aléatoire peut parfois se produire). Je peux reproduire cela autant de fois que je le veux. La touche F9 ne s'arrête pas directement aux points d'arrêt, mais la fenêtre cscript.exe affiche une fenêtre lors du débogage.

Mon projet est une DLL COM 300K.