Java Card CAP 文件组件分析 12—— Debug Component

来源:互联网 发布:韩国代购淘宝店推荐 编辑:程序博客网 时间:2024/06/02 00:27

Debug组件引用了Class组件、Method组件和Static Field组件,而不会被其他组件引用。Debug组件不会被下载到设备中去。

1
2
3
4
5
6
7
8
9
debug_component {
    u1 tag  // COMPONENT_Debug (12)
    u2 size
    u2 string_count     // strings_table[]中的string数
    utf8_info strings_table[string_count]
    u2 package_name_index   //指向strings_table[]的入口
    u2 class_count
    class_debug_info classes[class_count]
}

其中:

1
2
3
4
uft8_info {
    u2 length
    u1 bytes[length]
}

 

1
2
3
4
5
6
7
8
9
10
11
12
13
class_debug_info {  // 包含了类或接口的所有调试信息
    u2 name_index   //包含一个debug_component结构体中strings_table[]项的索引
    u2 access_flags // 2-byte
    u2 location     // 记录这个类或接口的class_info或interface_info在Class组件中info项的字节偏移
    u2 superclass_name_index
    u2 source_file_index
    u1 interface_count
    u2 field_count
    u2 method_count
    u2 interface_names_indexes[interface_count]
    field_debug_info fields[field_count]
    method_debug_info methods[method_count]
}

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
field_debug_info {  // 描述一个类中的一个域
    u2 name_index
    u2 descriptor_index
    u2 access_flags
    union {
        {
            u1 pad1
            u1 pad2
            u1 pad3
            u1 token
        }   token_var
        {
            u2 pad
            u2 location
        }   location_var
        u4 const_value
    }   contents
}

 

1
2
3
4
5
6
7
8
9
10
11
12
method_debug_info {     // 描述一个类中的一个方法
    u2 name_index
    u2 descriptor_index
    u2 access_flags
    u2 location
    u1 header_size
    u2 body_size
    u2 variable_count
    u2 line_count
    variable_info variable_table[variable_count]
    line_info line_table[line_count]
}

作者:fish
转自:http://www.dreamingfish123.info/?p=684
0 0
原创粉丝点击