JDI: Comment mettre en pause une application Java (JVM) comme dans le débogueur

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

  •  28-10-2019
  •  | 
  •  

Question

Je recherche potentiellement une API JDI pour suspendre la JVM à tout moment arbitraire de son exécution.En regardant le BreakPointRequest La méthode createBreakpointRequest nécessite un emplacement spécifique.Existe-t-il une autre API qui n'a pas besoin d'un emplacement ou d'une manière d'obtenir l'emplacement actuel qui pourrait être transmise pour créer un point d'arrêt.

Je cherche essentiellement un moyen d'attacher et de suspendre l'application, puis d'utiliser l'agent JVMTI pour recevoir un rappel de l'événement BreakPoint afin d'effectuer un traitement ultérieur.Merci

Était-ce utile?

La solution

Les points d'arrêt n'ont de sens qu'avec un emplacement dans la source.La mise en pause arbitraire de votre application est probablement mieux effectuée en suspendant tous les threads en cours d'exécution dans la JVM.Jetez un œil à SuspendThreadList() ou SuspendThread dans jvmti .Ce mécanisme serait la «pause» que vous recherchez.

Autres conseils

Si vous souhaitez suspendre arbitrairement un jvm en cours d'exécution avec JDI, vous utiliserez l'interface JDI VirtualMachine suspend méthode.

Cependant, cela ne vous donne pas vraiment grand-chose pour pouvoir ensuite vous connecter à un agent jvmti;comme le souligne l'autre réponse, le jvmti a ses propres méthodes pour faire la même chose.

Si vous cherchez un moyen de définir des rappels arbitraires pour les points d'arrêt, plutôt que d'appeler un agent spécifique, vous pourriez être intéressé par jdiscript , qui est une couche de script autour du JDI qui vous permet de faire de telles choses assez facilement en Java pur, plutôt que d'avoir à passer en C ++.

Je pense que jdb - The Java Debugger sera la meilleure option. s'il vous plaît vérifier l'url du jdb

http://docs.oracle.com/javase/1.3 / docs / tooldocs / solaris / jdb.html

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