2009-12-07 7 views
4

Comment sauter un point d'arrêt un certain nombre de fois dans jdb?Comment passer un point d'arrêt un certain nombre de fois dans Java jdb?

l'aide de

JDB offre ce conseil:

!!      -- repeat last command 
<n> <command>    -- repeat command n times 
# <command>    -- discard (no-op) 

Lorsque je tente de sauter cependant, comme points d'arrêt n nombre de fois:

80 cont 

ou comme ceci:

80 run 

jdb barfs:

main[1] 80 cont 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 

Breakpoint hit: main[1] > Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended.Exception in thread "event-handler" java.lang.NullPointerException 
     at com.sun.tools.example.debug.tty.TTY.printCurrentLocation(TTY.java:212) 
     at com.sun.tools.example.debug.tty.TTY.vmInterrupted(TTY.java:189) 
     at com.sun.tools.example.debug.tty.EventHandler.run(EventHandler.java:86) 
     at java.lang.Thread.run(Thread.java:619) 

> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 
> Nothing suspended. 

Que se passe-t-il ici? Comment puis-je obtenir le comportement souhaité?

Version:

> version 
This is jdb version 1.6 (J2SE version 1.6.0_16) 
Java Debug Interface (Reference Implementation) version 1.6 
Java Debug Wire Protocol (Reference Implementation) version 1.6 
JVM Debug Interface version 1.1 
JVM version 1.6.0_17 (Java HotSpot(TM) Client VM, mixed mode, sharing) 

Pour clarifier les choses, je suis débogage à distance. Par exemple, ma première fenêtre commence comme ceci:

% java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n LZWDecompress 

et ma deuxième fenêtre commence comme ceci:

% jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8000 

Répondre

5

Malheureusement, les points d'arrêt dans jdb n'offrent pas de fonctionnalités sophistiquées, telles que les points d'arrêt conditionnels ou "stop every n itérations". Cependant, étant donné que vous vous connectez à distance de toute façon, vous pouvez envisager d'utiliser le débogueur dans votre éditeur, car la plupart des éditeurs vous permettent de vous connecter à des machines distantes. Comme la majeure partie du travail de débogage est effectuée dans la JVM, et que seul l'affichage est effectué par l'éditeur, il ne sera pas beaucoup plus lent que d'utiliser jdb.

+0

Heh. ;) Mon éditeur est actuellement Notepad ++! : D Merci pour ces suggestions. – iokevins

3

Ce n'est pas exactement répondre à votre question, mais une solution rapide pourrait être de définir une variable de compteur global et faire

if(counter>=num_skips) 
    {counter++;} //set breakpoint on this line 
else 
    {counter++;} 
+0

Hé, c'est intelligent. :) Merci pour le conseil! – iokevins

+0

Pas de problème, heureux d'aider. – Roman

Questions connexes