Pontos de Interrupção

Os pontos de interrupção permitem que os usuários suspendam a execução de um programa em uma determinada localização.  Os pontos de interrupção são geralmente mostrados na UI juntamente com o código fonte.  Você pode adicionar um IBreakpointListener a um IBreakpointManager para ser notificado quando os pontos de interrupção são adicionados e removidos.  Quando um ponto de interrupção é encontrado durante a execução de um programa, o programa suspende e aciona um evento de depuração SUSPEND com BREAKPOINT como a razão. 

Os plug-ins que definem seus próprios modelos de depuração e configurações de ativação geralmente precisam definir seus próprios tipos de ponto de interrupção.  Você pode implementar pontos de interrupção para seu modelo específico de depuração definindo uma classe que implementa IBreakpoint

Os pontos de interrupção são implementados utilizando marcadores de recursos.  Lembre-se que os marcadores de recursos permitem associar metainformações sobre um recurso na forma de atributos nomeados.  Implementando um ponto de interrupção utilizando marcadores, o modelo de depuração pode utilizar todas as funções existentes do marcador, como persistência, pesquisa, adição, exclusão e exibição em editores.

Por que é importante saber sobre marcadores ao utilizar pontos de interrupção?  Quando você cria um tipo de ponto de interrupção, também deve especificar um tipo de marcador associado.  Cada extensão de org.eclipse.debug.core.breakpoints deve ser acompanhada por uma extensão de org.eclipse.core.resources.markers.  Isso é demonstrado melhor vendo as extensões definidas pelas ferramentas Java para pontos de interrupção Java.

<extension id="javaBreakpointMarker" point="org.eclipse.core.resources.markers">
	<super type="org.eclipse.debug.core.breakpointMarker"/>
 </extension>
<extension id="javaExceptionBreakpointMarker" point="org.eclipse.core.resources.markers">
	<super type="org.eclipse.jdt.debug.javaBreakpointMarker"/>
	<persistent value="true"/>
	<attribute name="org.eclipse.jdt.debug.core.caught"/>
	<attribute name="org.eclipse.jdt.debug.core.uncaught"/>
	<attribute name="org.eclipse.jdt.debug.core.checked"/>
   </extension>
<extension point="org.eclipse.debug.core.breakpoints">
	<breakpoint
		id="javaExceptionBreakpoint"
		markerType="org.eclipse.jdt.debug.javaExceptionBreakpointMarker"
		class="org.eclipse.jdt.internal.debug.core.breakpoints.JavaExceptionBreakpoint">
	</breakpoint>
   </extension>

O plug-in de depuração define um tipo especial de marcador, org.eclipse.debug.core.breakpointMarker.  Quando você define um marcador, deve declará-lo utilizando este marcador como um supertipo.  Isso permite que o modelo de depuração localize todos os pontos de interrupção possíveis em um arquivo de origem, pesquisando subtipos de seu marcador.  No exemplo acima, o javaExceptionBreakpointMarker possui um supertipo, javaBreakpointMarker, cujo supertipo é breakpointMarker.  O javaExceptionBreakpoint  (definido na extensão de ponto de interrupção) designa o javaExceptionBreakpointMarker como seu marcador.

O que significa tudo isso?  Quando o código de depuração contém um recurso de código fonte, ele pode pesquisar todos os marcadores cujo supertipo seja org.eclipse.debug.core.breakpointMarker.  Depois de localizar todos os marcadores, ele pode utilizar o registro do plug-in para mapear os marcadores para suas classes associadas de ponto de interrupção.  Desse modo, o código de depuração da plataforma pode localizar genericamente todos os tipos de ponto de interrupção que foram definidos em um determinado arquivo de origem .

 

Copyright IBM Corporation e outros 2000, 2003.