Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2015-12-27T12:58:46+01:00Les derniers messages parus sur le forum de Zeste de Savoir.Java.lang.OutOfMemoryError, message #912252015-12-27T12:58:46+01:00LineVa/@LineVahttps://zestedesavoir.com/forums/sujet/4946/javalangoutofmemoryerror/?page=1#p91225<p>Bonjour à tous</p>
<p>Je suis confrontée depuis ce matin à un problème assez handicapant pour travailler.</p>
<p>Quelques secondes après que netbeans se soit ouvert, il freeze totalement et j'obtiens le message suivant sur le terminal par lequel je lance netbeans (pas dans netbeans lui-même donc) :</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3</pre></div></td><td class="code"><div class="codehilite"><pre>>java.lang.OutOfMemoryError : java heap space
Dumping heap to /home/moi/.netbeans/8.0.2/var/log/heapdump.hprof ...
Heap dump file created <span class="o">[</span><span class="m">1264690397</span> bytes in 5,15s<span class="o">]</span>
</pre></div>
</td></tr></table>
<p>Après que ce message se soit affiché, netbeans re-fonctionne un petit peu mais il lui faut quand même plusieurs secondes pour simplement changer de ligne. Autrement dit, il est toujours inutilisable.</p>
<p>De ce que je comprends, netbeans n'a pas assez de mémoire pour tourner ?</p>
<p>Il y a deux points qui me font douter de ça :</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2</pre></div></td><td class="code"><div class="codehilite"><pre>il marchait très bien hier soir et je n'ai rien téléchargé/pas fait de mises à jour depuis.
Cette erreur se produit systématiquement dès que je tente la moindre action sur netbeans, par exemple lui demander d'ouvrir un fichier ...
</pre></div>
</td></tr></table>
<p>Je ne sais pas si cela peut changer quelque chose mais je suis sous Debian.</p>
<p>J'ai regardé sur internet, la question a déjà été posée mais je n'ai rien vu qui correspondante à mon cas. Le plus souvent, il s'agit d'un problème de mémoire lors de l'exécution d'un programme via netbeans.</p>
<p>Ne trouvant pas de solution, j'ai essayé la méthode forte en désinstallant netbeans via le script uninstall.sh puis en le réinstallant. L'erreur est toujours présente. Néanmoins, je suis un peu dubitative sur cette procédure. Lors de la désinstallation, les répertoires disparaissent bien. Mais lorsque je relance netbeans après l'avoir réinstallé, je retrouve les mêmes projets ouverts qu'avant l'opération …</p>
<p>Quelqu'un a-t-il une idée ?</p>
<p>Merci d'avance à tous.
Line </p>
<p>EDIT : C'et bon, j'ai fini par trouver la solution.</p>Appeler une fonction lors d'un breakpoint, message #631102015-06-27T02:37:41+02:00Davidbrcz/@Davidbrczhttps://zestedesavoir.com/forums/sujet/3316/appeler-une-fonction-lors-dun-breakpoint/?page=1#p63110<p>Réponse parfaite, merci beaucoup =)</p>Appeler une fonction lors d'un breakpoint, message #631092015-06-27T00:43:02+02:00tondeurh/@tondeurhhttps://zestedesavoir.com/forums/sujet/3316/appeler-une-fonction-lors-dun-breakpoint/?page=1#p63109<p>Avec ton exemple sous Netbeans, tu pose ton breakpoint sur System.out.println(…), puis tu lance le debugger Netbeans ctrl+F5</p>
<p>Il faut afficher la fenêtre "Evaluate Expression" ctrl+F9 ou le menu "Debug" et "Evaluate Expression…"</p>
<p>saisir dans cette fenêtre "t.foo();" et tu lance l’évaluation avec la flèche verte d’exécution qui se trouve dans cette fenêtre. Tu récupère la valeur de ton expression dans la la fenêtre des variables.</p>
<p>Le tout en image :
<img alt="Le tout en image" src="http://tondeurh.fr/software/netbeans_evexp.png"></p>Appeler une fonction lors d'un breakpoint, message #604702015-06-08T14:29:37+02:00Javier/@Javierhttps://zestedesavoir.com/forums/sujet/3316/appeler-une-fonction-lors-dun-breakpoint/?page=1#p60470<p>Les deux "grands" IDE Java permettent de faire ça à ma connaissance.</p>
<p>Dans Eclipse en mode debug, affiche la vue "Expression" et tu peux appeler n'importe quoi (une méthode ou autre). (<code>Window</code> -> <code>Show view</code> -> <code>Expressions</code>)</p>
<p>Dans IntelliJ c'est possible aussi : <a href="https://www.jetbrains.com/idea/help/evaluating-expressions.html">https://www.jetbrains.com/idea/help/evaluating-expressions.html</a></p>
<p>(Note : la doc d'IntelliJ est nettement meilleure que celle d'Eclipse, par contre les mecs de chez JetBrains sont complètement cinglés pour pondre une UX pareille : c'est simple : la fonctionnalité n'est <strong>jamais</strong> où tu la cherches… Heureusement que la doc est bonne).</p>
<blockquote>
<p>Je pensais que c'était assez basique mais faut croire que non…</p>
</blockquote>
<p>Si si, clairement c'est basique et encore heureux que les IDE civilisés proposent ça.</p>
<p>Par contre ce qui n'est pas basique, c'est dompter un IDE Java en disons… Moins de 6 mois. Et pour le coup y'en a aucun qui soit à la fois complet et facile d'accès…</p>Appeler une fonction lors d'un breakpoint, message #599052015-06-05T01:04:30+02:00Davidbrcz/@Davidbrczhttps://zestedesavoir.com/forums/sujet/3316/appeler-une-fonction-lors-dun-breakpoint/?page=1#p59905<figure><blockquote>
<p>Dans le debugger d'Eclipse, le <code>toString</code> de l'objet est automatiquement affiché dans la vue "Variables" (Voir mon screen ci-dessous).</p>
<p><img alt="Vue variable d'Eclipse" src="http://data.nimages.fr/20150604135604rdi.png"></p>
<p>Je pense que ça répond à ton besoin du coup.</p>
<p>Sinon, le debugger d'Eclipse permet le remplacement du code à chaud (sans redémarrer la JVM) et donc d'ajouter du code à exécuter (mais ça ne marche pas tout le temps).
</p>
</blockquote>
<figcaption><p><a href="http://zestedesavoir.com/forums/sujet/3316/appeler-une-fonction-lors-dun-breakpoint/?page=1#p59804">AlexRNL</a></p></figcaption></figure><p>Effectivement, y'a une colonne pour avoir la valeur de toString, elle n'était pas activée =/. Mais si je veux autre chose, je peux pas (genre un nombre en binaire/hexa/octal).</p>
<blockquote>
<p>Si tu veux injecter n'importe quoi comme code (qui n'existait pas avant) au bon milieu d'un >breakpoint, je crois que netbeans n'est pas fait pour ça.</p>
</blockquote>
<p>Je suis prêt à changer d'outils pour pouvoir faire ce que je veux avec mon programme</p>Appeler une fonction lors d'un breakpoint, message #598092015-06-04T14:26:15+02:00firm1/@firm1https://zestedesavoir.com/forums/sujet/3316/appeler-une-fonction-lors-dun-breakpoint/?page=1#p59809<figure><blockquote>
<p>Le truc c'est que je me contre fiche des valeurs des champs, elles ne me parlent pas. Le seul truc qui me parle, c'est le résultat d'un appel de fonction, fonction je ne n'ai pas les sources et que je ne peux pas appeler quand je debug …</p>
</blockquote>
<figcaption><p><a href="http://zestedesavoir.com/forums/sujet/3316/appeler-une-fonction-lors-dun-breakpoint/?page=1#p59772">Davidbrcz</a></p></figcaption></figure><p>Si tu veux injecter n'importe quoi comme code (qui n'existait pas avant) au bon milieu d'un breakpoint, je crois que netbeans n'est pas fait pour ça.</p>Appeler une fonction lors d'un breakpoint, message #598042015-06-04T14:04:25+02:00AlexRNL/@AlexRNLhttps://zestedesavoir.com/forums/sujet/3316/appeler-une-fonction-lors-dun-breakpoint/?page=1#p59804<p>Dans le debugger d'Eclipse, le <code>toString</code> de l'objet est automatiquement affiché dans la vue "Variables" (Voir mon screen ci-dessous).</p>
<p><figure><img alt="" src="http://data.nimages.fr/20150604135604rdi.png"><figcaption>Vue variable d'Eclipse</figcaption></figure></p>
<p>Je pense que ça répond à ton besoin du coup.</p>
<p>Sinon, le debugger d'Eclipse permet le remplacement du code à chaud (sans redémarrer la JVM) et donc d'ajouter du code à exécuter (mais ça ne marche pas tout le temps).</p>Appeler une fonction lors d'un breakpoint, message #597722015-06-04T00:42:52+02:00Davidbrcz/@Davidbrczhttps://zestedesavoir.com/forums/sujet/3316/appeler-une-fonction-lors-dun-breakpoint/?page=1#p59772<blockquote>
<p>Il te suffit de rajouter ton t.foo() dans ton code après le system.out.println et ton breakpoint positionné sur le system.out.println va, lors du debug, s'arrêter sur cette ligne, te donnant ainsi la possibilité de poursuivre manuellement l'exécution de ton code.</p>
</blockquote>
<p>En suivant ta logique, si je veux voir la valeur avant/après une intruction, je dois ajouter 2 appels ? C'est pas pratique du tout… </p>
<p>Et puis changer le code pour debuguer c'est vachement con. Cat tu vas pas debug pas le même code (par définition) et ca sape tout le principe du debugger.</p>
<blockquote>
<p>Tu pourra donc au fur et à mesure voir l'évolution des valeurs.</p>
</blockquote>
<p>Le truc c'est que je me contre fiche des valeurs des champs, elles ne me parlent pas. Le seul truc qui me parle, c'est le résultat d'un appel de fonction, fonction je ne n'ai pas les sources et que je ne peux pas appeler quand je debug …</p>Appeler une fonction lors d'un breakpoint, message #597522015-06-03T22:14:23+02:00firm1/@firm1https://zestedesavoir.com/forums/sujet/3316/appeler-une-fonction-lors-dun-breakpoint/?page=1#p59752<p>Il te suffit de rajouter ton t.foo() dans ton code après le system.out.println et ton breakpoint positionné sur le <code>system.out.println</code> va, lors du debug, s'arrêter sur cette ligne, te donnant ainsi la possibilité de poursuivre manuellement l'exécution de ton code.</p>
<p>Tu pourra donc au fur et à mesure voir l'évolution des valeurs.</p>Appeler une fonction lors d'un breakpoint, message #597252015-06-03T19:19:50+02:00Davidbrcz/@Davidbrczhttps://zestedesavoir.com/forums/sujet/3316/appeler-une-fonction-lors-dun-breakpoint/?page=1#p59725<p>Prenons le code suivant</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18</pre></div></td><td class="code"><div class="codehilite"><pre><span class="kd">public</span> <span class="kd">class</span> <span class="nc">TestJava</span> <span class="o">{</span>
<span class="kt">int</span> <span class="n">a</span><span class="o">;</span>
<span class="kt">int</span> <span class="n">b</span><span class="o">;</span>
<span class="kd">public</span> <span class="kt">int</span> <span class="nf">foo</span><span class="o">(){</span>
<span class="k">return</span> <span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="nf">TestJava</span><span class="o">(</span><span class="kt">int</span> <span class="n">aa</span><span class="o">,</span><span class="kt">int</span> <span class="n">bb</span><span class="o">){</span>
<span class="n">a</span><span class="o">=</span><span class="n">aa</span><span class="o">;</span>
<span class="n">b</span><span class="o">=</span><span class="n">bb</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="o">{</span>
<span class="n">TestJava</span> <span class="n">t</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TestJava</span><span class="o">(</span><span class="mi">42</span><span class="o">,</span><span class="mi">666</span><span class="o">);</span>
<span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"PIPO"</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
</pre></div>
</td></tr></table>
<p>Imagine que je colle un breakpoint sur la ligne de <em>System.out.println</em>.
Comment je fais pour appeler t.foo depuis mon debguger quand j'ai atteint le breakpoint ?</p>Appeler une fonction lors d'un breakpoint, message #596622015-06-03T12:17:26+02:00firm1/@firm1https://zestedesavoir.com/forums/sujet/3316/appeler-une-fonction-lors-dun-breakpoint/?page=1#p59662<p>J'ai du mal à comprendre ton problème. Le breakpoint te permet de stopper l’exécution automatique et tu peux donc la reprendre manuellement (à coup de F7 ou F8 je sais plus) instruction par instruction.</p>
<p>Tu peux donc voir le contenu de tes variables lors du debug</p>Appeler une fonction lors d'un breakpoint, message #596402015-06-03T01:22:10+02:00Davidbrcz/@Davidbrczhttps://zestedesavoir.com/forums/sujet/3316/appeler-une-fonction-lors-dun-breakpoint/?page=1#p59640<p>Bonjour à tous.</p>
<p>Je travaille avec Netbeans 8.0 et je debug une application écrite en Java.
Lorsque je tape un breakpoint, je veux pouvoir appeler une fonction sur un objet. Le but c'est de choper la valeur d'un <em>BigInteger</em> avec un appel à <em>intValue</em> au lieu de voir les différents champs qui composent la classe (et qui ne me parles absolument pas). Pas moyen de trouver comment faire. </p>
<p>Je pensais que c'était assez basique mais faut croire que non…</p>
<p>Je suis prêt à changer de debugger si jamais il le faut.</p>
<p>Merci.
David.</p>