`
zhaozhongwei
  • 浏览: 54551 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

eclipse debug

阅读更多

JDIModelPresentation

IDebugModelPresentation #getEditorInput方法得到editinput

 

org.eclipse.debug.internal.ui.sourcelookup.SourceLookupFacility#lookup方法里通过

 

if (presentation != null) {
     editorInput= presentation.getEditorInput(sourceElement);
    }
    if (editorInput != null) {
     editorId= presentation.getEditorId(editorInput, sourceElement);
    } 

 

然后都设置到SourceLookupResult里

 

org.eclipse.debug.internal.ui.sourcelookup.SourceLookupFacility#display方法里

得到editor,如果

editorPresentation.addAnnotations(editor, frame)的值为true(非文本的的不过调试),这需要我们的IDebugModelPresentation同时也是IDebugEditorPresentation而且需要方法addAnnotations返回true,图形定位就是在这里完成的。

然后调用如下代码:

    Decoration decoration = new StandardDecoration(editorPresentation, editor, frame.getThread());
    DecorationManager.addDecoration(decoration);

 

如果addAnnotations返回false,这个时候编辑器应该是ITextEditor类型或这个可以被adapt到ITextEditor,然后根据IStackFrame得到行数,然后再得到IRegion,从而调用:

editor.selectAndReveal(region.getOffset(), 0);

来定位到当前行。

 

 

断点是在ToggleBreakpointAdapter#toggleBreakpoints中创建的,比如JavaLineBreakpoint是在toggleLineBreakpoints方法中创建的,在这个方法中有如下判断:

IJavaLineBreakpoint existingBreakpoint = JDIDebugModel.lineBreakpointExists(resource, tname, lnumber);
       if (existingBreakpoint != null) {
        DebugPlugin.getDefault().getBreakpointManager().removeBreakpoint(existingBreakpoint, true);
        return Status.OK_STATUS;
       }

 

也就是如果存在了就删除。

 

 

 

为特定的modelId定制变量值修改及保存功能

 <extension
       point="org.eclipse.debug.ui.variableValueEditors">
    <variableValueEditor
          modelId="org.eclipse.jdt.debug"
          class="org.eclipse.jdt.internal.debug.ui.actions.JavaVariableValueEditor"/>
 </extension>

 

 

扩展点org.eclipse.jdt.launching.vmInstallTypes,是在installed jres 点add按钮出现的jre类型。

可以通过如下扩展点给对应的vmtype添加下一页的ui内容

 

 <extension
       point="org.eclipse.jdt.debug.ui.vmInstallPages">
    <vmInstallPage
          class="org.eclipse.jdt.internal.debug.ui.jres.EEVMPage"
          vmInstallType="org.eclipse.jdt.launching.EEVMType">
    </vmInstallPage>
 </extension>

 

如果没给对应的vmInstallType添加对应的page则使用默认的StandardVMPage

 

 

TreeModelContentProvider是变量视图的ContentProvider,会委托给具体的类来做,比如jdt中是通过JavaStackFrameContentProvider(通过JDIStackFrame adapt 而来)来完成的,labelprovider是JavaVariableLabelProvider来完成的。

 

InternalTreeModelViewer#CellModifierProxy变量值修改。

 

而点完某个变量,如果这个变量是Object,会调用对象的toString()方法,显示在变量下面的文本区域。这是通过JDIThread的invokeMethod(ClassType, ObjectReference, Method, List, boolean)方法完成的

 

 

分享到:
评论
2 楼 zhaozhongwei 2010-05-05  
editor.selectAndReveal(region.getOffset(), 0);

所以这个和你的editor有关,你先确定这个方法被调用,然后看看你的editor里这个方法都做了什么。我想应该有关,但不确定,很久没弄debug了:)

兄弟相称就可以,我也是小弟呵呵
1 楼 popjxc 2010-05-04  
你好,看了你的文章启发很大。
请问一下,selectAndReveal方法是让选中的行有一个绿条吗?
小弟现在的debugger中的绿条不能刷新,需要用鼠标点一下才能变绿,好奇怪呀。。

相关推荐

    Eclipse debug 调试

    Eclipse Debug 调试技巧总结 Eclipse Debug 调试是一种实用的Java调试技巧,主要用于Eclipse操作讲述,讲述了多种调试技巧。下面是对Eclipse debug 调试的详细介绍: 一、断点调试 断点是调试中最基本的概念。在...

    eclipse debug (调试) 学习心得.doc

    Eclipse Debug 技巧总结 Eclipse Debug 是 Eclipse 平台上的一款强大的调试工具,提供了丰富的调试功能,包括分步执行、设置断点和值、检查变量和值、挂起和恢复线程的功能。本文总结了 Eclipse Debug 的主要技巧和...

    Eclipse Debug Flash教程

    【Eclipse Debug Flash教程】 Eclipse作为一款强大的Java开发集成环境,同时也支持多种其他语言的开发,包括ActionScript和Flex,这些是构建Flash应用程序的基础。本教程将详细讲解如何在Eclipse中进行Flash项目的...

    android开发--详解eclipse debug && eclipse快捷键

    #### 五、Eclipse Debug技巧 - **管理断点**:建议在每次调试结束时清除所有断点,以避免积累过多的断点影响性能。可以通过“Breakpoints”视图来管理和删除断点。 - **监控变量**:对于频繁变化的变量,应定期清理...

    Eclipse Debug 调试技巧入门

    "Eclipse Debug 调试技巧入门" Eclipse Debug 是一个功能强大且灵活的调试工具,提供了多种调试功能,包括分步执行、设置断点和值、检查变量和值、挂起和恢复线程的功能。Eclipse 平台很健壮,因为其他编程语言可以...

    liferay tomcat eclipse debug

    标题 "liferay tomcat eclipse debug" 暗示了我们正在讨论如何在Eclipse环境中调试Liferay Portal,这是一个基于Java的开源企业级内容管理和协作平台,通常与Apache Tomcat这样的Servlet容器结合使用。以下是关于这...

    Eclipse Debug不为人知的秘密

    Eclipse Debug不为人知的秘密

    eclipse debug (调试) 学习心得

    在编程开发过程中,调试是必不可少的一个环节,Eclipse作为一款强大的Java集成开发环境,其调试功能强大且易用。本文将详细介绍Eclipse调试器的一些核心功能和技巧,帮助开发者更好地理解和运用这些工具。 首先,...

    eclipse debug调试的快捷键和常用快捷键

    ### Eclipse Debug调试的快捷键和常用快捷键 在软件开发过程中,使用Eclipse进行调试是一项非常重要的技能。本文将详细介绍Eclipse中与Debug相关的快捷键以及其他常用的快捷键,帮助开发者提高工作效率。 #### 一...

    eclipse debug方式部署cloudstack4.0

    标题《eclipse debug方式部署cloudstack4.0》所涉及的知识点主要包括以下方面: 1. Eclipse环境配置:Eclipse是一个开放源代码的集成开发环境(IDE),广泛用于Java开发,具有丰富的插件生态系统。在部署CloudStack...

    Eclipse Debug模式的开启与关闭问题简析

    Eclipse Debug模式的开启与关闭问题简析 Eclipse Debug模式是Eclipse集成开发环境中的一种调试模式,允许开发者通过设置断点、单步执行、变量监视等方式来调试自己的程序。然而,在实际使用中,开发者可能会遇到...

    Eclipse_debug技巧

    ### Eclipse Debug 技巧详解 #### 一、概述 在软件开发过程中,调试是不可或缺的一环,它能够帮助开发者快速定位并解决问题。Eclipse作为一款流行的集成开发环境(IDE),提供了丰富的调试工具来辅助开发者进行...

    Eclipse Debug

    Eclipse Debug介绍,实习期间接触Debug,一直只会F5,F6,F7,F8,刚好要求做个ppt演示任何东西,总结了一下刚学的,带给和我一样只会F5,F6,F7,F8的朋友

    Eclipse debug技术

    Eclipse Debug技术是Java开发中不可或缺的一部分,它允许开发者深入程序内部,检查并理解代码的运行状态,从而高效地定位和修复错误。Eclipse作为一款强大的集成开发环境(IDE),其调试功能强大且灵活,提供了丰富...

    计算机后端-Java-Java核心基础-第13章 面向对象05 06. Eclipse Debug的使用.avi

    计算机后端-Java-Java核心基础-第13章 面向对象05 06. Eclipse Debug的使用.avi

    EclipseDebug技巧

    本文将深入探讨"EclipseDebug技巧"这一主题,帮助开发者提高工作效率,解决编程过程中遇到的问题。 首先,理解Eclipse调试器的基本操作至关重要。在Eclipse中,你可以通过点击工具栏上的"Debug"按钮或使用快捷键...

    在Eclipse中使用debug(Eclipse调试常用技巧)

    在Eclipse中使用debug是软件开发中调试代码的一个重要环节,尤其对于Java开发者来说,Eclipse作为一个成熟的集成开发环境,提供了强大的调试工具和技巧。尽管图像内容无法直接查看,但是根据标题和描述,我们可以...

    在Eclipse中使用debug

    在 Debug 视图的 Variables 小窗口中,我们可以看到变量的值,可以右键选择"Change Value...",在弹出的对话框中修改变量的值,或者在下面的值查看窗口中修改,使用 Ctr+S 保存后,变量值就会变成修改后的新值了。...

    eclipse中debug技巧

    ### Eclipse中的Debug技巧详解 #### 一、概述 在软件开发过程中,调试是必不可少的一环。Eclipse作为一款广泛使用的集成开发环境(IDE),提供了丰富的调试功能,可以帮助开发者高效地定位和解决代码中的问题。...

    Android 开发之Eclipse Debug调试详解

    在Android开发过程中,调试是必不可少的一个环节,Eclipse作为曾经主流的Android开发IDE,提供了强大的Debug功能。本文将深入解析Eclipse中如何有效地进行Android应用的调试。 首先,添加程序断点是调试的基础。在...

Global site tag (gtag.js) - Google Analytics