61 votes

Comment définir un point d'arrêt dans Eclipse, dans une troisième partie de la bibliothèque?

Je suis un NullPointerException dans une Classe à partir d'une 3ème partie de la bibliothèque. Maintenant, je tiens à déboguer l'ensemble de la chose et j'aurais besoin de savoir de quel objet de la classe est tenue. Mais il me semble que je ne peux pas définir un point d'arrêt dans une Classe à partir d'une 3ème partie.

Est-ce quelqu'un connais un moyen de sortir de mon problème? Bien sûr, je suis à l'aide d'Eclipse que mon IDE.

Mise à jour: la bibliothèque est open-source.

67voto

Joachim Sauer Points 133411

Vous pouvez facilement définir la méthode des points d'arrêt dans la 3ème partie de bibliothèques sans avoir la source. Il suffit d'ouvrir la classe (vous obtiendrez le "je n'ai pas de source" vue). Ouvrez l'aperçu, cliquez-droit sur la méthode que vous souhaitez et cliquez sur l' Toggle Method Breakpoint pour créer la méthode de point d'arrêt.

38voto

Jared Points 7800

La plus sûre façon de le faire (et à la fin avec quelque chose qui est réellement utile) est de télécharger les sources (vous dites qu'il est open-source), et de mettre en place un autre "Projet Java" pointant sur cette source.

Pour ce faire, obtenir la source téléchargé et décompressé quelque part sur votre système. Cliquez Sur "Fichier"->"Nouveau"->"Java Project". Dans la boîte de dialogue suivante, donnez-lui un nom de projet et sélectionnez "Créer un Projet à partir de sources Existantes". Accédez à la racine de l'emplacement de la bibliothèque open source.

En supposant que toutes les bibliothèques supplémentaires qui sont requis par le projet sont inclus dans le projet que vous avez téléchargé, Eclipse va tout comprendre et de définir le chemin de génération en place pour vous.

Vous aurez besoin de retirer l'open source jar de votre projet de construction de chemin d'accès, et d'ajouter ce nouveau projet de construction de chemin d'accès de votre projet.

Maintenant, vous pouvez simplement vous considérez que c'est votre code, et de débogage à volonté.

Cela devient autour d'au moins un couple de problèmes avec d'autres approches:

  1. "D'attacher la source" pour le fichier jar, mais si le fichier jar a été compilé sans les informations de débogage, cela ne fonctionne toujours pas. Si le fichier jar a été compilé avec les informations de débogage (lines,source,vars...voir http://java.sun.com/j2se/1.3/docs/tooldocs/win32/javac.htmlet l' -g option).

  2. Vous pouvez ajouter une exception de point d'arrêt" pour voir si le NullPointerException est élevé, mais c'est une exception, et pourrait bien être soulevées et traitées avec de nombreux (plusieurs centaines d'?) fois avant d'être celui que vous cherchez. De Plus, sans la source d'origine, vous ne serez pas en mesure de vraiment voir beaucoup de chose sur le code qui est en train de jeter le NullPointerException - la probabilité que vous serez en mesure de comprendre quel est le problème est assez faible.

7voto

lindelof Points 9802

Vous pouvez également définir des points d'arrêt sur les exceptions spécifiques. À partir de la perspective Debug, il y a un bouton "Ajouter une Exception Java point d'arrêt", et là, vous pouvez ajouter "NullPointerException". Votre débogueur sera alors suspendre l'exécution dès qu'une exception est levée.

1voto

Normalement, vous devriez être en mesure de définir un point de rupture. Surtout si la 3ème partie de la bibliothèque est open source. Mais si votre 3ème partie lib est à partir d'un fournisseur commercial, ils peuvent avoir compilé les sources avec l'indicateur de débogage éteint. Ce sera impossible pour vous de débogage en elle. Votre fournisseur peut avoir fait cela dans le cadre d'un processus d'obscurcissement pour le rendre impossible à inverser la bibliothèque, ou tout simplement parce que la dernière des classes compilées seront plus petits.

0voto

Robin Green Points 12926

Il suffit de fixer la source (ou utiliser quelque chose qui associe automatiquement la source du pot), puis de définir un point d'arrêt dans la voie normale, en double-cliquant à gauche de la ligne d'intérêt.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X