2011-03-21 22 views

Respuesta

29

Ponga un punto de interrupción en el método "ejecutar" del nuevo hilo. Eso detendría la ejecución una vez que comience el hilo.

+0

Tengo un punto de interrupción en la línea que contiene t.start(), y un punto de interrupción en la primera línea en ejecutar(). Cuando hago un Step-Into, va a la línea después de t.start() en lugar de dentro de run(). –

+0

Eso se espera, pulse "Reanudar" después de t.start(). El depurador hará una pausa en la primera línea de ejecución después de un tiempo. –

164

Además de la respuesta de Shamit Verma:

Cuando se trata de depurar aplicaciones multi-hilo, es mejor no utilizar puntos de corte estándar que suspenden sólo el hilo donde se establece el punto de interrupción. La definición de un punto de interrupción estándar en su aplicación solo romperá el hilo relacionado. Los otros hilos seguirán ejecutándose. En el depurador de eclipse, por algún motivo, el depurador omitirá los puntos de interrupción si ya se han iniciado otros subprocesos.

La solución:

definir un punto de interrupción en el hilo deseada (@ método Run() i espero ..), haga clic derecho en el punto de ruptura -> propiedades de punto de interrupción.

En el diálogo de propiedades de punto de interrupción, marque "Suspender VM" en lugar de "Suspender hilo".

Si te gusta, se suspenderá toda tu máquina virtual en caso de que se alcance un punto de interrupción.

+2

Esta es una muy buena información, gracias Erik! –

+3

+1 por la información, estoy sorprendido de cómo esta respuesta tiene solo 9 votos –

+1

Desafortunadamente, "Suspender VM" no está disponible al depurar el código C/C++. Estoy intentando depurar una aplicación nativa de Android y la pérdida continua de foco en otros hilos me está volviendo loco. sigue buscando una solución ... – martinako

3

Además de la respuesta de Erik Kaju. Si está depurando CDT (esto podría ser aplicable para Java, así, no estoy seguro de eso), entonces

  1. Deja un punto de interrupción en el método run() (o su equivalente). O cualquier punto en el que esté seguro de que se están ejecutando los subprocesos necesarios y el subproceso no requerido (los que el filtro eliminará).
  2. Inicia la sesión de depuración.
  3. Cuando se alcanza el punto de interrupción en la ejecución, puede ir a otro punto de interrupción, habilitar ese punto de interrupción si se deshabilitó. A continuación, haga clic con el botón derecho en el punto de interrupción -> vaya a Filtros, ahora puede seleccionar el hilo para el que desea que el punto de interrupción permanezca habilitado y puede desmarcar el resto de los hilos. Entonces, este punto de interrupción solo será afectado por ese hilo en particular.

El inconveniente es que este procedimiento debe repetirse para cada sesión de depuración. Si alguien puede proporcionar atajos para ello, sería bueno.

0

en su ventana de depuración de eclipse puede saltar los hilos para aterrizar en el número de hilo de trabajador deseado y continuar su paso por la exploración secuencial (F6). enter image description here

Cuestiones relacionadas