CDT源代码框架分析改造 线程对象的改造 添加标签 区分断点跟跟踪点

cdt 到debug 通信路线

CBreakpointManager类中

protected void setBreakpointsOnTarget0( ICBreakpoint[] breakpoints )
{
//添加标示符 

                    String pointtype =breakpoint.getPointType();
                    fileName = convertPath(fileName).toOSString();
                    ICDIFunctionLocation location = cdiTarget.createFunctionLocation( fileName, function );
                    ICDICondition condition = createCondition2( breakpoint );
                    fBreakpointProblems.add(BreakpointProblems.reportUnresolvedBreakpoint(breakpoint, getDebugTarget().getName(), getDebugTarget().getInternalID()));
                    if (bpManager2 != null)
                        cdiBreakpoint = bpManager2.setFunctionBreakpoint( location, condition, true,
                                breakpoints[i].isEnabled(), breakpoints[i].isTemporary(),breakpoint.getID(), symbolFile ,pointtype);
....
}

Target

    /****
     * wangmin
     * add type is tracepoint
     *
     */
    public ICDIFunctionBreakpoint setFunctionBreakpoint(ICDIFunctionLocation location,
            ICDICondition condition, boolean deferred, boolean enabled, boolean temp, String id, String symbolFilePath,String pointType) throws CDIException {
        BreakpointManager bMgr = ((Session)getSession()).getBreakpointManager();
        return bMgr.setFunctionBreakpoint(this, location, condition, deferred, enabled, temp, id, symbolFilePath, pointType);

}

breakpointManager

    /**
     *
     * wangmin add type
     * @param target
     * @param location
     * @param condition
     * @param deferred
     * @param enabled
     * @param temp
     * @param id
     * @param symbolFilePath
     * @return
     * @throws CDIException
     */
    public ICDIFunctionBreakpoint setFunctionBreakpoint(Target target, ICDIFunctionLocation location,
            ICDICondition condition, boolean deferred, boolean enabled, boolean temp, String id, String symbolFilePath,String typePoint ) throws CDIException {
        FunctionBreakpoint bkpt = new FunctionBreakpoint(target, location, condition, enabled);
        //bkpt.setID(id);
        //duyingze 20080802 所有断点使用统一的id
        bkpt.setPointType(typePoint);
        bkpt.setBpID(id);
        bkpt.setSymbolFilePath(symbolFilePath);
        setNewLocationBreakpoint(bkpt, deferred);
        return bkpt;
    }

这里注意下 FunctionBreakpoint 是LocationBreakpoint的子类

同样是管理器中

调用mi。并且创建了一个MIBreakpointCreatedEvent事件。

    protected void setNewLocationBreakpoint(LocationBreakpoint bkpt, boolean deferred) throws CDIException {
        Target target = (Target)bkpt.getTarget();
        MISession miSession = target.getMISession();
        try {
            setLocationBreakpoint(bkpt);
            List blist = getBreakpointsList(target);
            blist.add(bkpt);

            // Fire a created Event.
            MIBreakpoint[] miBreakpoints = bkpt.getMIBreakpoints();
            if (miBreakpoints != null && miBreakpoints.length > 0) {
                miSession.fireEvent(new MIBreakpointCreatedEvent(miSession, miBreakpoints[0].getNumber()));
            }
        }
时间: 2024-10-31 04:56:59

CDT源代码框架分析改造 线程对象的改造 添加标签 区分断点跟跟踪点的相关文章

CDT源代码框架分析改造 线程对象的改造(三)

需求:当Debug系统上点击了停止跟踪后,如果缓存桢个数不为零,则默认显示第一桢的基本信息(跟踪点的id,线程id.等) 添加停止跟踪事件,这部分机制后面说.ICDIStopTraceEvent. CThread对象实现了ICDIEventListener接口,因此在出发停止跟踪事件的时候.该类的handleDebugEvents方法会拦截到此命令. 在CDT中,每个调试对象都有一个表现层跟CDT层的对象 例如线程对象. CThread对象位于eclipse的core包中.它通过getCDITh

lua 源码分析之线程对象lua_State

lua_State 中放的是 lua 虚拟机中的环境表.注册表.运行堆栈.虚拟机的上下文等数据. 从一个主线程(特指 lua 虚拟机中的线程,即 coroutine)中创建出来的新的 lua_State 会共享大部分数据,但会拥有一个独立的运行堆栈.所以一个线程对象拥有一个lua_State. (ps:lua 的coroutine的使用参考: http://blog.csdn.NET/wusheng520/article/details/7954666) lua_State共享的数据部分是全局状

jQuery源代码 框架分析

每个框架都有一个核心.全部的结构都是基于这个核心之上,结构建立好了之后,剩下的就是功能的堆砌. jQuery的核心就是从HTML文档中匹配元素并对其操作. 就跟一座大楼一样.让我们一步一步了解这座大厦的基石和结构. 1.构造函数 2.链式语法 3.选择器 4.扩展性  一.构造函数 我们知道类是面向对象编程的一个重要概念.它是对事物的最高抽象.它是一个模型.通过实例化一个类,我们能够创建一个实例. javascript本身没有类的概念.仅仅有原型prototype.prototype是什么呢?它

Android Bitmap 开源图片框架分析(精华三)

主要介绍这三个框架,都挺有名的,其他的框架估计也差不多了 Android-Universal-Image-Loaderhttps://github.com/nostra13/Android-Universal-Image-Loader ImageLoaderhttps://github.com/novoda/ImageLoader Volley(综合框架,包含图片部分)https://github.com/mcxiaoke/android-volley 扯淡时间,可以跳过这段这些开源框架的源码还

Android Bitmap 开源图片框架分析(精华四)

disk缓存主要难点在于内存缓存,disk缓存其实比较简单,就是图片加载完成后把图片文件存到本地方便下次使用 同样,先贴一下官方主页的介绍(主页地址见文章最开始处)和内存缓存差不多,根据算法不同提供了几种类别,可以自行通过ImageLoaderConfiguration.discCache(..)设置<ignore_js_op> 硬盘缓存,保存是以文件的形式框架提供了4种类型,具体算法规则不同,看名字我们大概也能知道对应意思 UnlimitedDiscCache                

Google Test测试框架分析

Google Test测试框架分析 一.简介 Google Test是由Google主导的一个开源的C++自动化测试框架,简称GTest.GTest基于xUnit单元测试体系,和CppUint类似,可以看作是JUnit.PyUnit等对C++的移植. 下图是GTest测试框架的测试过程,表示的是GTest的两种测试方式. 下面将使用一个极其简单的例子表示xUnit测试的主要过程.如对Hummer的CTXString类的成员方法GetLength进行测试.详见下面GTest代码和注释说明. //

JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?

前言:休整一个多月之后,终于开始投简历了.这段时间休息了一阵子,又病了几天,真正用来复习准备的时间其实并不多.说实话,心里不是非常有底气. 这可能是学生时代遗留的思维惯性--总想着做好万全准备才去做事.当然,在学校里考试之前当然要把所有内容学一遍和复习一遍.但是,到了社会里做事,很多时候都是边做边学.应聘如此,工作如此,很多的挑战都是如此.没办法,硬着头皮上吧. 3.5 线程的分组管理 在实际的开发过程当中,可能会有多个线程同时存在,这对批量处理有了需求.这就有点像用迅雷下载电视剧,假设你在同时

SEAndroid安全机制框架分析

我们知道,Android系统基于Linux实现.针对传统Linux系统,NSA开发了一套安全机制SELinux,用来加强安全性.然而,由于Android系统有着独特的用户空间运行时,因此SELinux不能完全适用于Android系统.为此,NSA针对Android系统,在SELinux基础上开发了SEAndroid.本文就对SEAndroid安全机制框架进行分析,以便后面可以更好地分析其实现细节. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! SEAnd

simple-framework(MaliSDK框架分析)

simple-framework(Mali SDK框架分析) 1.所有的定义及实现放在同一个命名空间中,文件包含#include一般在命名空间的外面.总的命名空间为namespace MaliSDK{}:使用时using namespaceMaliSDK包含所有命名空间中的内容. 2.头文件中定义类型,并用#ifndef,#define, #endif来防止多次包含的问题,在对应的.cpp文件中实现.定义与实现相分离. 各文件功能: 1. VectorTypes.h:在该文件中定义了向量类型,用