Comment empiler Trace un processus en cours d'exécution en Java

Comment empiler Trace un processus en cours d'exécution en Java
Une trace de pile n'est rien de plus que l'emplacement des exceptions dans les programmes Java ou vous pouvez dire qu'il est utilisé pour trouver ces lignes d'un code où des exceptions se produisent. Une trace de pile fonctionne de la même manière qu'une pile de papiers sur votre bureau fait d'abord, dernier. Vous ajoutez des papiers à la pile, puis les sortez dans l'ordre inverse. Il comprend des détails sur un processus ou une opération que votre code a invoqué. En conséquence, la trace Java Stack est une séquence de trames qui commence par la méthode actuelle et se termine par la création du programme.

La pile, également connue sous le nom de pile d'exécution ou d'appel, est une collection de cadres de pile créés par un programme pendant qu'il s'exécute et stocké dans une structure de données de pile. Java Virtual Machine (JVM) générera automatiquement une trace de pile lorsqu'une exception se produit. Ainsi, cet article vous fournira la directive sur la façon dont vous pouvez utiliser la trace de pile du processus en cours d'exécution en Java.

Qu'est-ce que le traçage de pile dans Java

Maintenant, avant de créer un fichier Java, vous devez vous assurer que vous avez installé l'application Java Development Kit (JDK) dans votre système d'exploitation Linux, sinon, vous ne pourrez pas exécuter un programme Java en tapant:

$ sudo apt installer par défaut-jdk

Après avoir installé cette application préalable, vous devez créer un fichier Java et l'un des moyens les plus simples de procéder est d'utiliser n'importe quel éditeur de texte en tapant:

$ nano javastacktrace.Java

Après avoir créé un fichier Java, l'étape suivante consiste à écrire et à enregistrer un code qui peut être vu ci-dessous:

Après avoir enregistré un fichier Java, l'étape suivante consiste à le compiler et à l'exécuter:

$ javac javastacktrace.Java
$ java javastacktrace

Vous pouvez voir que nous avons écrit Demofun3 () comme la dernière fonction lors de l'écriture d'un code, mais il a été exécuté dans la deuxième ligne car c'est le point de génération de trace qui sera responsable d'exécuter le Dumpstack () qui affichera la sortie à l'écran. Les fonctions restantes à partir de Demofun2 () pour Demofun () s'exécutera après dans l'ordre inverse et le principal() La fonction est affichée en bas car elle est responsable du démarrage du programme et appellera également d'autres fonctions également.

Vous pouvez dire que le point d'exécution de la pile commence à partir de la première ligne et que le cadre de pile commence de la deuxième ligne à la dernière ligne qui constitue la trace de pile entière. Nous pouvons observer que la méthode qui est effectuée devient d'abord la dernière trame de pile de la trace de pile, tandis que la méthode exécutée devient dernier le premier cadre de pile de la trace de pile et, par conséquent, chaque pièce de trace de pile représente un cadre de pile.

Comment empiler la trace d'un processus en cours

JSTACK est un excellent outil pour résoudre les problèmes d'exécution, surtout si votre application agit, consommant plus de CPU ou de mémoire que prévu, vous pouvez résoudre l'application. Implémentons-le en Java:

classe publique ForceDump
public static void main (String [] args) lève une exception
essayer
while (true)
Fil.Sleep (2000);

catch (démo nullpointerException)
Démo.printStackTrace ();


Après cela, vous pouvez créer un fichier Java en utilisant n'importe quel éditeur de texte comme nous l'avons fait en utilisant un éditeur de texte nano comme indiqué ci-dessous

$ Nano ForceDump.Java

Après cela, le compilez en utilisant:

$ Javac ForceDump.Java

Et exécuter:

$ Java ForceDump

Après avoir exécuté ce programme, un processus d'arrière-plan commencera; Pour trouver l'ID de processus (PID), ouvrez une autre fenêtre de terminal et utilisez:

$ ps Aux | Grep ForceDump

Ensuite, vous pouvez trouver des informations supplémentaires concernant les threads qui s'exécutent dans un processus en utilisant la commande ci-dessous:

$ jstack

L'ID de processus est 4457 comme indiqué dans l'image:

$ jstack 4457

Conclusion

Une trace de pile est une collection de cadres de pile qui illustre un moment spécifique dans le temps lors de l'exécution d'un programme. Il comprend des détails sur une méthode ou une fonction que votre code a invoqué. Par conséquent, la trace Java Stack est une série de trames qui commencent par la méthode actuelle et se termine par le début du programme. Dans cet article, nous vous avons montré comment vous pouvez implémenter le processus de traçage de la pile dans le langage de programmation Java.