00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00027 #ifndef JDWP_CONSTANTS_H_INCLUDED
00028 #define JDWP_CONSTANTS_H_INCLUDED
00029
00030 #include <QString>
00031
00032 namespace inspectorj {
00033 namespace jdwp {
00034
00035
00036
00038 const char* const JDWP_HANDSHAKE = "JDWP-Handshake";
00039
00041 const int JDWP_HANDSHAKE_LENGTH = 14;
00042
00044 const int JDWP_HEADER_LENGTH = 11;
00045
00046
00047
00049 struct FieldID
00050 {
00052 qint64 value;
00053 };
00054
00056 struct ObjectID
00057 {
00059 qint64 value;
00060 };
00061
00063 struct MethodID
00064 {
00066 qint64 value;
00067 };
00068
00070 struct ReferenceTypeID
00071 {
00073 qint64 value;
00074 };
00075
00077 struct FrameID
00078 {
00080 qint64 value;
00081 };
00082
00083 enum
00084 {
00085 ERR_NONE = 0,
00086 ERR_INVALID_THREAD = 10,
00087 ERR_INVALID_THREAD_GROUP = 11,
00088 ERR_INVALID_PRIORITY = 12,
00089 ERR_THREAD_NOT_SUSPENDED = 13,
00090 ERR_THREAD_SUSPENDED = 14,
00091 ERR_INVALID_OBJECT = 20,
00092 ERR_INVALID_CLASS = 21,
00093 ERR_CLASS_NOT_PREPARED = 22,
00094 ERR_INVALID_METHODID = 23,
00095 ERR_INVALID_LOCATION = 24,
00096 ERR_INVALID_FIELDID = 25,
00097 ERR_INVALID_FRAMEID = 30,
00098 ERR_NO_MORE_FRAMES = 31,
00099 ERR_OPAQUE_FRAME = 32,
00100 ERR_NOT_CURRENT_FRAME = 33,
00101 ERR_TYPE_MISMATCH = 34,
00102 ERR_INVALID_SLOT = 35,
00103 ERR_DUPLICATE = 40,
00104 ERR_NOT_FOUND = 41,
00105 ERR_INVALID_MONITOR = 50,
00106 ERR_NOT_MONITOR_OWNER = 51,
00107 ERR_INTERRUPT = 52,
00108 ERR_INVALID_CLASS_FORMAT = 60,
00109 ERR_CIRCULAR_CLASS_DEFINITION = 61,
00110 ERR_FAILS_VERIFICATION = 62,
00111 ERR_ADD_METHOD_NOT_IMPLEMENTED = 63,
00112 ERR_SCHEMA_CHANGE_NOT_IMPLEMENTED = 64,
00113 ERR_INVALID_TYPESTATE = 65,
00114 ERR_HIERARCHY_CHANGE_NOT_IMPLEMENTED = 66,
00115 ERR_DELETE_METHOD_NOT_IMPLEMENTED = 67,
00116 ERR_UNSUPPORTED_VERSION = 68,
00117 ERR_NAMES_DONT_MATCH = 69,
00118 ERR_CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 70,
00119 ERR_METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 71,
00120 ERR_NOT_IMPLEMENTED = 99,
00121 ERR_NULL_POINTER = 100,
00122 ERR_ABSENT_INFORMATION = 101,
00123 ERR_INVALID_EVENT_TYPE = 102,
00124 ERR_ILLEGAL_ARGUMENT = 103,
00125 ERR_OUT_OF_MEMORY = 110,
00126 ERR_ACCESS_DENIED = 111,
00127 ERR_VM_DEAD = 112,
00128 ERR_INTERNAL = 113,
00129 ERR_UNATTACHED_THREAD = 115,
00130 ERR_INVALID_TAG = 500,
00131 ERR_ALREADY_INVOKING = 502,
00132 ERR_INVALID_INDEX = 503,
00133 ERR_INVALID_LENGTH = 504,
00134 ERR_INVALID_STRING = 506,
00135 ERR_INVALID_CLASS_LOADER = 507,
00136 ERR_INVALID_ARRAY = 508,
00137 ERR_TRANSPORT_LOAD = 509,
00138 ERR_TRANSPORT_INIT = 510,
00139 ERR_NATIVE_METHOD = 511,
00140 ERR_INVALID_COUNT = 512
00141 };
00142
00143
00149 void getJDWPError(int errCode, QString &s);
00150
00152 typedef enum
00153 {
00154 EVENT_SINGLE_STEP = 1,
00155 EVENT_BREAKPOINT = 2,
00156 EVENT_FRAME_POP = 3,
00157 EVENT_EXCEPTION = 4,
00158 EVENT_USER_DEFINED = 5,
00159 EVENT_THREAD_START = 6,
00160 EVENT_THREAD_END = 7,
00161 EVENT_CLASS_PREPARE = 8,
00162 EVENT_CLASS_UNLOAD = 9,
00163 EVENT_CLASS_LOAD = 10,
00164 EVENT_FIELD_ACCESS = 20,
00165 EVENT_FIELD_MODIFICATION = 21,
00166 EVENT_EXCEPTION_CATCH = 30,
00167 EVENT_METHOD_ENTRY = 40,
00168 EVENT_METHOD_EXIT = 41,
00169 EVENT_VM_INIT = 90,
00170 EVENT_VM_DEATH = 99
00171 } eventKindConstants;
00172
00174 typedef enum
00175 {
00176 THREAD_STATUS_ZOMBIE = 0,
00177 THREAD_STATUS_RUNNING = 1,
00178 THREAD_STATUS_SLEEPING = 2,
00179 THREAD_STATUS_MONITOR = 3,
00180 THREAD_STATUS_WAIT = 4
00181 } threadStatusConstants;
00182
00184 typedef enum
00185 {
00186 SUSPEND_STATUS_SUSPENDED = 0x1
00187 } suspendStatusConstants;
00188
00190 typedef enum
00191 {
00192 CLASS_STATUS_VERIFIED = 1,
00193 CLASS_STATUS_PREPARED = 2,
00194 CLASS_STATUS_INITIALIZED = 4,
00195 CLASS_STATUS_ERROR = 8
00196 } classStatusConstants;
00197
00199 typedef enum
00200 {
00201 TAG_TYPE_CLASS = 1,
00202 TAG_TYPE_INTERFACE = 2,
00203 TAG_TYPE_ARRAY = 3
00204 } typeTagConstants;
00205
00207 typedef enum
00208 {
00209 TAG_ARRAY = 91,
00210 TAG_BYTE = 66,
00211 TAG_CHAR = 67,
00212 TAG_OBJECT = 76,
00213 TAG_FLOAT = 70,
00214 TAG_DOUBLE = 68,
00215 TAG_INT = 73,
00216 TAG_LONG = 74,
00217 TAG_SHORT = 83,
00218 TAG_VOID = 86,
00219 TAG_BOOLEAN = 90,
00220 TAG_STRING = 115,
00221 TAG_THREAD = 116,
00222 TAG_THREAD_GROUP = 103,
00223 TAG_CLASS_LOADER = 108,
00224 TAG_CLASS_OBJECT = 99
00225 } tagConstants;
00226
00228 typedef enum
00229 {
00230 STEP_INTO = 0,
00231 STEP_OVER = 1,
00232 STEP_OUT = 2
00233 } stepDepthConstants;
00234
00236 typedef enum
00237 {
00238 STEP_SIZE_MIN = 0,
00239 STEP_SIZE_LINE = 1
00240 } stepSizeConstants;
00241
00243 typedef enum
00244 {
00245 SUSPEND_POLICY_NONE = 0,
00246 SUSPEND_POLICY_EVENT_THREAD = 1,
00247 SUSPEND_POLICY_ALL = 2
00248 } suspendPolicyConstants;
00249
00251 typedef enum
00252 {
00253 INVOKE_SINGLE_THREADED = 0x01,
00254 INVOKE_NONVIRTUAL = 0x02
00255 } invokeOptionsConstants;
00256
00258 typedef enum {
00259 VM_COMMAND_SET = 1,
00260 REF_TYPE_COMMAND_SET = 2,
00261 CLASS_TYPE_COMMAND_SET = 3,
00262 ARRAY_TYPE_COMMAND_SET = 4,
00263 IF_COMMAND_SET = 5,
00264 METHOD_COMMAND_SET = 6,
00265 OBJECT_REF_COMMAND_SET = 9,
00266 STRING_REF_COMMAND_SET = 10,
00267 THREAD_REF_COMMAND_SET = 11,
00268 THREAD_GROUP_REF_COMMAND_SET = 12,
00269 ARRAY_REF_COMMAND_SET = 13,
00270 CLASS_LDR_REF_COMMAND_SET = 14,
00271 EVENT_REQUEST_COMMAND_SET = 15,
00272 STACK_FRAME_COMMAND_SET = 16,
00273 CLASS_OBJECT_REF_COMMAND_SET = 17,
00274 EVENT_COMMAND_SET = 64,
00275 INSPECTORJ_COMMAND_SET = -1,
00276 BYTECODE_COMMAND_SET = 99
00277 } jdwpCommandSet;
00278
00280 typedef enum {
00281 VM_CMD_VERSION = 1,
00282 VM_CMD_CLASSES_BY_SIGNATURE = 2,
00283 VM_CMD_ALL_CLASSES = 3,
00284 VM_CMD_ALL_THREADS = 4,
00285 VM_CMD_TOP_LEVEL_THREAD_GROUPS = 5,
00286 VM_CMD_DISPOSE = 6,
00287 VM_CMD_ID_SIZES = 7,
00288 VM_CMD_SUSPEND = 8,
00289 VM_CMD_RESUME = 9,
00290 VM_CMD_EXIT = 10,
00291 VM_CMD_CREATE_STRING = 11,
00292 VM_CMD_CAPABILITIES = 12,
00293 VM_CMD_CLASSPATHS = 13,
00294 VM_CMD_DISPOSE_OBJECTS = 14,
00295 VM_CMD_HOLD_EVENTS = 15,
00296 VM_CMD_RELEASE_EVENTS = 16,
00297 VM_CMD_CAPABILITIES_NEW = 17,
00298 VM_CMD_REDEFINE_CLASSES = 18,
00299 VM_CMD_SET_DEFAULT_STRATUM = 19,
00300 VM_CMD_ALL_CLASSES_WITH_GENERIC = 20
00301 } virtualMachineCmd;
00302
00304 typedef enum {
00305 REF_TYPE_CMD_SIGNATURE = 1,
00306 REF_TYPE_CMD_CLASS_LOADER = 2,
00307 REF_TYPE_CMD_MODIFIERS = 3,
00308 REF_TYPE_CMD_FIELDS = 4,
00309 REF_TYPE_CMD_METHODS = 5,
00310 REF_TYPE_CMD_GET_VALUES = 6,
00311 REF_TYPE_CMD_SOURCE_FILE = 7,
00312 REF_TYPE_CMD_NESTED_TYPES = 8,
00313 REF_TYPE_CMD_STATUS = 9,
00314 REF_TYPE_CMD_INTERFACES = 10,
00315 REF_TYPE_CMD_CLASS_OBJECT = 11,
00316 REF_TYPE_CMD_SOURCE_DEBUG_EXTENSION = 12,
00317 REF_TYPE_CMD_SIGNATURE_WITH_GENERIC = 13,
00318 REF_TYPE_CMD_FIELDS_WITH_GENERIC = 14,
00319 REF_TYPE_CMD_METHODS_WITH_GENERIC = 15
00320 } referenceTypeCmd;
00321
00323 typedef enum {
00324 BC_TYPE_CMD_DISASSEMBLE = 1,
00325 } byteCodeCmd;
00326
00328 typedef enum {
00329 CLASS_TYPE_CMD_SUPER_CLASS = 1,
00330 CLASS_TYPE_CMD_SET_VALUES = 2,
00331 CLASS_TYPE_CMD_INVOKE_METHOD = 3,
00332 CLASS_TYPE_CMD_NEW_INSTANCE = 4
00333 } classTypeCmd;
00334
00336 typedef enum {
00337 ARRAY_TYPE_CMD_NEW_INSTANCE = 1
00338 } arrayTypeCmd;
00339
00341 typedef enum {
00342
00343 } interfaceCmd;
00344
00346 typedef enum {
00347 METHOD_CMD_LINE_TABLE = 1,
00348 METHOD_CMD_VARIABLE_TABLE = 2,
00349 METHOD_CMD_BYTECODES = 3,
00350 METHOD_CMD_IS_OBSOLETE = 4,
00351 METHOD_CMD_VARIABLE_TABLE_WITH_GENERIC = 5
00352 } methodCmd;
00353
00355 typedef enum {
00356 OBJECT_REF_CMD_REFERENCE_TYPE = 1,
00357 OBJECT_REF_CMD_GET_VALUES = 2,
00358 OBJECT_REF_CMD_SET_VALUES = 3,
00359 OBJECT_REF_CMD_MONITOBJECT_REF_INFO = 5,
00360 OBJECT_REF_CMD_INVOKE_METHOD = 6,
00361 OBJECT_REF_CMD_DISABLE_COLLECTION = 7,
00362 OBJECT_REF_CMD_ENABLE_COLLECTION = 8,
00363 OBJECT_REF_CMD_IS_COLLECTED = 9
00364 } objectReferenceCmd;
00365
00367 typedef enum {
00368 STRING_REF_CMD_VALUE = 1
00369 } stringReferenceCmd;
00370
00372 typedef enum {
00373 THREAD_REFCMD_NAME = 1,
00374 THREAD_REFCMD_SUSPEND = 2,
00375 THREAD_REFCMD_RESUME = 3,
00376 THREAD_REFCMD_STATUS = 4,
00377 THREAD_REFCMD_THREAD_GROUP = 5,
00378 THREAD_REFCMD_FRAMES = 6,
00379 THREAD_REFCMD_FRAME_COUNT = 7,
00380 THREAD_REFCMD_OWNED_MONITORS = 8,
00381 THREAD_REFCMD_CURRENT_CONTENDED_MONITOR = 9,
00382 THREAD_REFCMD_STOP = 10,
00383 THREAD_REFCMD_INTERRUPT = 11,
00384 THREAD_REFCMD_SUSPEND_COUNT = 12
00385 } threadReferenceCmd;
00386
00388 typedef enum {
00389 THREAD_GROUP_REFCMD_NAME = 1,
00390 THREAD_GROUP_REFCMD_PARENT = 2,
00391 THREAD_GROUP_REFCMD_CHILDREN = 3
00392 } threadGroupReferenceCmd;
00393
00395 typedef enum {
00396 ARRAY_REF_CMD_LENGTH = 1,
00397 ARRAY_REF_CMD_GET_VALUES = 2,
00398 ARRAY_REF_CMD_SET_VALUES = 3
00399 } arrayReferenceCmd;
00400
00402 typedef enum {
00403 CLASS_LDR_REF_CMD_VISIBLE_CLASSES = 1
00404 } classLoaderReferenceCmd;
00405
00407 typedef enum {
00408 EVENT_REQUEST_CMD_SET = 1,
00409 EVENT_REQUEST_CMD_CLEAR = 2,
00410 EVENT_REQUEST_CMD_CLEAR_ALL_BREAKPOINTS = 3
00411 } eventRequestCmd;
00412
00414 typedef enum {
00415 STACK_FRAME_CMD_GET_VALUES = 1,
00416 STACK_FRAME_CMD_SET_VALUES = 2,
00417 STACK_FRAME_CMD_THIS_OBJECT = 3,
00418 STACK_FRAME_CMD_POP_FRAMES = 4
00419 } stackFrameCmd;
00420
00422 typedef enum {
00423 CLASS_OBJECT_REF_CMD_REFLECTED_TYPE = 1
00424 } classObjectReferenceCmd;
00425
00427 typedef enum {
00428 EVENT_CMD_COMPOSITE = 100
00429 } eventCmd;
00430
00432 typedef enum {
00433 IJ_DISCONNECT = 1,
00434 IJ_EXIT = 2
00435 } inspectorjCmd;
00436
00437 }
00438 }
00439
00440 #endif //JDWP_CONSTANTS_H_INCLUDED
00441