Pourquoi le programme débogué ralentir tant le débogage lors de l'utilisation de l'entrée de la méthode?

StackOverflow https://stackoverflow.com/questions/751105

  •  09-09-2019
  •  | 
  •  

Question

J'utilise des interfaces JDI pour créer un débogueur et quand j'utilise MethodEntryRequests pour permettre l'entrée de la méthode de traçage du programme débogué ralentit par un facteur de dix. J'ai mis filtre pour fil conducteur et de suspendre la politique de SUSPEND_EVENT_THREAD. Classfilter est limitée et si j'imprime des événements reçus il ne montre pas plus de deux douzaines de personnes ne devrait donc pas recevoir trop d'entre eux. Je suis mise au point localement et ayant followind type de commande en ligne avec le programme java débogué:

-Xdebug -Xrunjdwp:transport=dt_socket,suspend=y,server=y,address=1337

Était-ce utile?

La solution

La réponse courte est que l'exécution passe par l'interprète lorsque les entrées de méthode sont définies. Je ne pense pas qu'il y ait de toute façon autour de cette ...

Cette habitude d'être le cas pour tout le code en cours d'exécution en mode débogage, mais il a été amélioré dans 1.4 ... maintenant fonctionne HotSpot pour le débogage « pleine vitesse », sauf dans le cas des entrées de méthode et de sorties, watchpoints et quand stepping simple ou dans les méthodes qui contiennent des points d'arrêt.

Autres conseils

2 raisons:

  1. il doit ajouter des contrôles sur chaque entrée de la méthode (Il n'y a pas possibilité de modifier seulement certaines méthodes)
  2. méthode
  3. inline devient impossible (Si petites méthodes fonctionne 10-100x fois plus lent)

va de même pour les profileurs et des applications .net

Je suppose que le débogueur a besoin de se réveiller pour chaque appel de méthode pour voir si elle correspond à celle (s) qui ont été sélectionnés pour briser. Parce qu'il doit vérifier chaque appel de méthode pour un match potentiel avant de pouvoir l'exécuter est considérablement plus lent que si elle ne doit pas faire toutes ces vérifications.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top