1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 /* 17 * These come out of the JDWP documentation. 18 */ 19 #ifndef DALVIK_JDWP_JDWPCONSTANTS_H_ 20 #define DALVIK_JDWP_JDWPCONSTANTS_H_ 21 22 /* 23 * Error constants. 24 */ 25 enum JdwpError { 26 ERR_NONE = 0, 27 ERR_INVALID_THREAD = 10, 28 ERR_INVALID_THREAD_GROUP = 11, 29 ERR_INVALID_PRIORITY = 12, 30 ERR_THREAD_NOT_SUSPENDED = 13, 31 ERR_THREAD_SUSPENDED = 14, 32 ERR_INVALID_OBJECT = 20, 33 ERR_INVALID_CLASS = 21, 34 ERR_CLASS_NOT_PREPARED = 22, 35 ERR_INVALID_METHODID = 23, 36 ERR_INVALID_LOCATION = 24, 37 ERR_INVALID_FIELDID = 25, 38 ERR_INVALID_FRAMEID = 30, 39 ERR_NO_MORE_FRAMES = 31, 40 ERR_OPAQUE_FRAME = 32, 41 ERR_NOT_CURRENT_FRAME = 33, 42 ERR_TYPE_MISMATCH = 34, 43 ERR_INVALID_SLOT = 35, 44 ERR_DUPLICATE = 40, 45 ERR_NOT_FOUND = 41, 46 ERR_INVALID_MONITOR = 50, 47 ERR_NOT_MONITOR_OWNER = 51, 48 ERR_INTERRUPT = 52, 49 ERR_INVALID_CLASS_FORMAT = 60, 50 ERR_CIRCULAR_CLASS_DEFINITION = 61, 51 ERR_FAILS_VERIFICATION = 62, 52 ERR_ADD_METHOD_NOT_IMPLEMENTED = 63, 53 ERR_SCHEMA_CHANGE_NOT_IMPLEMENTED = 64, 54 ERR_INVALID_TYPESTATE = 65, 55 ERR_HIERARCHY_CHANGE_NOT_IMPLEMENTED = 66, 56 ERR_DELETE_METHOD_NOT_IMPLEMENTED = 67, 57 ERR_UNSUPPORTED_VERSION = 68, 58 ERR_NAMES_DONT_MATCH = 69, 59 ERR_CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 70, 60 ERR_METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 71, 61 ERR_NOT_IMPLEMENTED = 99, 62 ERR_NULL_POINTER = 100, 63 ERR_ABSENT_INFORMATION = 101, 64 ERR_INVALID_EVENT_TYPE = 102, 65 ERR_ILLEGAL_ARGUMENT = 103, 66 ERR_OUT_OF_MEMORY = 110, 67 ERR_ACCESS_DENIED = 111, 68 ERR_VM_DEAD = 112, 69 ERR_INTERNAL = 113, 70 ERR_UNATTACHED_THREAD = 115, 71 ERR_INVALID_TAG = 500, 72 ERR_ALREADY_INVOKING = 502, 73 ERR_INVALID_INDEX = 503, 74 ERR_INVALID_LENGTH = 504, 75 ERR_INVALID_STRING = 506, 76 ERR_INVALID_CLASS_LOADER = 507, 77 ERR_INVALID_ARRAY = 508, 78 ERR_TRANSPORT_LOAD = 509, 79 ERR_TRANSPORT_INIT = 510, 80 ERR_NATIVE_METHOD = 511, 81 ERR_INVALID_COUNT = 512, 82 }; 83 const char* dvmJdwpErrorStr(JdwpError error); 84 85 86 /* 87 * ClassStatus constants. These are bit flags that can be ORed together. 88 */ 89 enum JdwpClassStatus { 90 CS_VERIFIED = 0x01, 91 CS_PREPARED = 0x02, 92 CS_INITIALIZED = 0x04, 93 CS_ERROR = 0x08, 94 }; 95 96 /* 97 * EventKind constants. 98 */ 99 enum JdwpEventKind { 100 EK_SINGLE_STEP = 1, 101 EK_BREAKPOINT = 2, 102 EK_FRAME_POP = 3, 103 EK_EXCEPTION = 4, 104 EK_USER_DEFINED = 5, 105 EK_THREAD_START = 6, 106 EK_THREAD_END = 7, 107 EK_CLASS_PREPARE = 8, 108 EK_CLASS_UNLOAD = 9, 109 EK_CLASS_LOAD = 10, 110 EK_FIELD_ACCESS = 20, 111 EK_FIELD_MODIFICATION = 21, 112 EK_EXCEPTION_CATCH = 30, 113 EK_METHOD_ENTRY = 40, 114 EK_METHOD_EXIT = 41, 115 EK_VM_INIT = 90, 116 EK_VM_DEATH = 99, 117 EK_VM_DISCONNECTED = 100, /* "Never sent across JDWP */ 118 EK_VM_START = EK_VM_INIT, 119 EK_THREAD_DEATH = EK_THREAD_END, 120 }; 121 const char* dvmJdwpEventKindStr(JdwpEventKind kind); 122 123 /* 124 * Values for "modKind" in EventRequest.Set. 125 */ 126 enum JdwpModKind { 127 MK_COUNT = 1, 128 MK_CONDITIONAL = 2, 129 MK_THREAD_ONLY = 3, 130 MK_CLASS_ONLY = 4, 131 MK_CLASS_MATCH = 5, 132 MK_CLASS_EXCLUDE = 6, 133 MK_LOCATION_ONLY = 7, 134 MK_EXCEPTION_ONLY = 8, 135 MK_FIELD_ONLY = 9, 136 MK_STEP = 10, 137 MK_INSTANCE_ONLY = 11, 138 }; 139 const char* dvmJdwpModKindStr(JdwpModKind kind); 140 141 /* 142 * InvokeOptions constants (bit flags). 143 */ 144 enum JdwpInvokeOptions { 145 INVOKE_SINGLE_THREADED = 0x01, 146 INVOKE_NONVIRTUAL = 0x02, 147 }; 148 149 /* 150 * StepDepth constants. 151 */ 152 enum JdwpStepDepth { 153 SD_INTO = 0, /* step into method calls */ 154 SD_OVER = 1, /* step over method calls */ 155 SD_OUT = 2, /* step out of current method */ 156 }; 157 const char* dvmJdwpStepDepthStr(JdwpStepDepth depth); 158 159 /* 160 * StepSize constants. 161 */ 162 enum JdwpStepSize { 163 SS_MIN = 0, /* step by minimum (e.g. 1 bytecode inst) */ 164 SS_LINE = 1, /* if possible, step to next line */ 165 }; 166 const char* dvmJdwpStepSizeStr(JdwpStepSize size); 167 168 /* 169 * SuspendPolicy constants. 170 */ 171 enum JdwpSuspendPolicy { 172 SP_NONE = 0, /* suspend no threads */ 173 SP_EVENT_THREAD = 1, /* suspend event thread */ 174 SP_ALL = 2, /* suspend all threads */ 175 }; 176 const char* dvmJdwpSuspendPolicyStr(JdwpSuspendPolicy policy); 177 178 /* 179 * SuspendStatus constants. 180 */ 181 enum JdwpSuspendStatus { 182 SUSPEND_STATUS_NOT_SUSPENDED = 0, 183 SUSPEND_STATUS_SUSPENDED = 1, 184 }; 185 const char* dvmJdwpSuspendStatusStr(JdwpSuspendStatus status); 186 187 /* 188 * ThreadStatus constants. 189 */ 190 enum JdwpThreadStatus { 191 TS_ZOMBIE = 0, 192 TS_RUNNING = 1, // RUNNING 193 TS_SLEEPING = 2, // (in Thread.sleep()) 194 TS_MONITOR = 3, // WAITING (monitor wait) 195 TS_WAIT = 4, // (in Object.wait()) 196 }; 197 const char* dvmJdwpThreadStatusStr(JdwpThreadStatus status); 198 199 /* 200 * TypeTag constants. 201 */ 202 enum JdwpTypeTag { 203 TT_CLASS = 1, 204 TT_INTERFACE = 2, 205 TT_ARRAY = 3, 206 }; 207 208 /* 209 * Tag constants. 210 */ 211 enum JdwpType { 212 JT_ARRAY = '[', 213 JT_BYTE = 'B', 214 JT_CHAR = 'C', 215 JT_OBJECT = 'L', 216 JT_FLOAT = 'F', 217 JT_DOUBLE = 'D', 218 JT_INT = 'I', 219 JT_LONG = 'J', 220 JT_SHORT = 'S', 221 JT_VOID = 'V', 222 JT_BOOLEAN = 'Z', 223 JT_STRING = 's', 224 JT_THREAD = 't', 225 JT_THREAD_GROUP = 'g', 226 JT_CLASS_LOADER = 'l', 227 JT_CLASS_OBJECT = 'c', 228 }; 229 230 #endif // DALVIK_JDWP_JDWPCONSTANTS_H_ 231