/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * String constants to go along with enumerated values. (Pity we don't * have enumerated constant reflection in C.) These are only needed for * making the output human-readable. */ #include "jdwp/JdwpConstants.h" /* * Return a string for the error code. */ const char* dvmJdwpErrorStr(JdwpError error) { switch (error) { case ERR_NONE: return "NONE"; case ERR_INVALID_THREAD: return "INVALID_THREAD"; case ERR_INVALID_THREAD_GROUP: return "INVALID_THREAD_GROUP"; case ERR_INVALID_PRIORITY: return "INVALID_PRIORITY"; case ERR_THREAD_NOT_SUSPENDED: return "THREAD_NOT_SUSPENDED"; case ERR_THREAD_SUSPENDED: return "THREAD_SUSPENDED"; case ERR_INVALID_OBJECT: return "INVALID_OBJEC"; case ERR_INVALID_CLASS: return "INVALID_CLASS"; case ERR_CLASS_NOT_PREPARED: return "CLASS_NOT_PREPARED"; case ERR_INVALID_METHODID: return "INVALID_METHODID"; case ERR_INVALID_LOCATION: return "INVALID_LOCATION"; case ERR_INVALID_FIELDID: return "INVALID_FIELDID"; case ERR_INVALID_FRAMEID: return "INVALID_FRAMEID"; case ERR_NO_MORE_FRAMES: return "NO_MORE_FRAMES"; case ERR_OPAQUE_FRAME: return "OPAQUE_FRAME"; case ERR_NOT_CURRENT_FRAME: return "NOT_CURRENT_FRAME"; case ERR_TYPE_MISMATCH: return "TYPE_MISMATCH"; case ERR_INVALID_SLOT: return "INVALID_SLOT"; case ERR_DUPLICATE: return "DUPLICATE"; case ERR_NOT_FOUND: return "NOT_FOUND"; case ERR_INVALID_MONITOR: return "INVALID_MONITOR"; case ERR_NOT_MONITOR_OWNER: return "NOT_MONITOR_OWNER"; case ERR_INTERRUPT: return "INTERRUPT"; case ERR_INVALID_CLASS_FORMAT: return "INVALID_CLASS_FORMAT"; case ERR_CIRCULAR_CLASS_DEFINITION: return "CIRCULAR_CLASS_DEFINITION"; case ERR_FAILS_VERIFICATION: return "FAILS_VERIFICATION"; case ERR_ADD_METHOD_NOT_IMPLEMENTED: return "ADD_METHOD_NOT_IMPLEMENTED"; case ERR_SCHEMA_CHANGE_NOT_IMPLEMENTED: return "SCHEMA_CHANGE_NOT_IMPLEMENTED"; case ERR_INVALID_TYPESTATE: return "INVALID_TYPESTATE"; case ERR_HIERARCHY_CHANGE_NOT_IMPLEMENTED: return "HIERARCHY_CHANGE_NOT_IMPLEMENTED"; case ERR_DELETE_METHOD_NOT_IMPLEMENTED: return "DELETE_METHOD_NOT_IMPLEMENTED"; case ERR_UNSUPPORTED_VERSION: return "UNSUPPORTED_VERSION"; case ERR_NAMES_DONT_MATCH: return "NAMES_DONT_MATCH"; case ERR_CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED: return "CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED"; case ERR_METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED: return "METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED"; case ERR_NOT_IMPLEMENTED: return "NOT_IMPLEMENTED"; case ERR_NULL_POINTER: return "NULL_POINTER"; case ERR_ABSENT_INFORMATION: return "ABSENT_INFORMATION"; case ERR_INVALID_EVENT_TYPE: return "INVALID_EVENT_TYPE"; case ERR_ILLEGAL_ARGUMENT: return "ILLEGAL_ARGUMENT"; case ERR_OUT_OF_MEMORY: return "OUT_OF_MEMORY"; case ERR_ACCESS_DENIED: return "ACCESS_DENIED"; case ERR_VM_DEAD: return "VM_DEAD"; case ERR_INTERNAL: return "INTERNAL"; case ERR_UNATTACHED_THREAD: return "UNATTACHED_THREAD"; case ERR_INVALID_TAG: return "INVALID_TAG"; case ERR_ALREADY_INVOKING: return "ALREADY_INVOKING"; case ERR_INVALID_INDEX: return "INVALID_INDEX"; case ERR_INVALID_LENGTH: return "INVALID_LENGTH"; case ERR_INVALID_STRING: return "INVALID_STRING"; case ERR_INVALID_CLASS_LOADER: return "INVALID_CLASS_LOADER"; case ERR_INVALID_ARRAY: return "INVALID_ARRAY"; case ERR_TRANSPORT_LOAD: return "TRANSPORT_LOAD"; case ERR_TRANSPORT_INIT: return "TRANSPORT_INIT"; case ERR_NATIVE_METHOD: return "NATIVE_METHOD"; case ERR_INVALID_COUNT: return "INVALID_COUNT"; default: return "?UNKNOWN?"; } } /* * Return a string for the EventKind. */ const char* dvmJdwpEventKindStr(JdwpEventKind kind) { switch (kind) { case EK_SINGLE_STEP: return "SINGLE_STEP"; case EK_BREAKPOINT: return "BREAKPOINT"; case EK_FRAME_POP: return "FRAME_POP"; case EK_EXCEPTION: return "EXCEPTION"; case EK_USER_DEFINED: return "USER_DEFINED"; case EK_THREAD_START: return "THREAD_START"; /*case EK_THREAD_END: return "THREAD_END";*/ case EK_CLASS_PREPARE: return "CLASS_PREPARE"; case EK_CLASS_UNLOAD: return "CLASS_UNLOAD"; case EK_CLASS_LOAD: return "CLASS_LOAD"; case EK_FIELD_ACCESS: return "FIELD_ACCESS"; case EK_FIELD_MODIFICATION: return "FIELD_MODIFICATION"; case EK_EXCEPTION_CATCH: return "EXCEPTION_CATCH"; case EK_METHOD_ENTRY: return "METHOD_ENTRY"; case EK_METHOD_EXIT: return "METHOD_EXIT"; case EK_VM_INIT: return "VM_INIT"; case EK_VM_DEATH: return "VM_DEATH"; case EK_VM_DISCONNECTED: return "VM_DISCONNECTED"; /*case EK_VM_START: return "VM_START";*/ case EK_THREAD_DEATH: return "THREAD_DEATH"; default: return "?UNKNOWN?"; } } /* * Return a string for the ModKind. */ const char* dvmJdwpModKindStr(JdwpModKind kind) { switch (kind) { case MK_COUNT: return "COUNT"; case MK_CONDITIONAL: return "CONDITIONAL"; case MK_THREAD_ONLY: return "THREAD_ONLY"; case MK_CLASS_ONLY: return "CLASS_ONLY"; case MK_CLASS_MATCH: return "CLASS_MATCH"; case MK_CLASS_EXCLUDE: return "CLASS_EXCLUDE"; case MK_LOCATION_ONLY: return "LOCATION_ONLY"; case MK_EXCEPTION_ONLY: return "EXCEPTION_ONLY"; case MK_FIELD_ONLY: return "FIELD_ONLY"; case MK_STEP: return "STEP"; case MK_INSTANCE_ONLY: return "INSTANCE_ONLY"; default: return "?UNKNOWN?"; } } /* * Return a string for the StepDepth. */ const char* dvmJdwpStepDepthStr(JdwpStepDepth depth) { switch (depth) { case SD_INTO: return "INTO"; case SD_OVER: return "OVER"; case SD_OUT: return "OUT"; default: return "?UNKNOWN?"; } } /* * Return a string for the StepSize. */ const char* dvmJdwpStepSizeStr(JdwpStepSize size) { switch (size) { case SS_MIN: return "MIN"; case SS_LINE: return "LINE"; default: return "?UNKNOWN?"; } } /* * Return a string for the SuspendPolicy. */ const char* dvmJdwpSuspendPolicyStr(JdwpSuspendPolicy policy) { switch (policy) { case SP_NONE: return "NONE"; case SP_EVENT_THREAD: return "EVENT_THREAD"; case SP_ALL: return "ALL"; default: return "?UNKNOWN?"; } } /* * Return a string for the SuspendStatus. */ const char* dvmJdwpSuspendStatusStr(JdwpSuspendStatus status) { switch (status) { case SUSPEND_STATUS_NOT_SUSPENDED: return "Not SUSPENDED"; case SUSPEND_STATUS_SUSPENDED: return "SUSPENDED"; default: return "?UNKNOWN?"; } } /* * Return a string for the ThreadStatus. */ const char* dvmJdwpThreadStatusStr(JdwpThreadStatus status) { switch (status) { case TS_ZOMBIE: return "ZOMBIE"; case TS_RUNNING: return "RUNNING"; case TS_SLEEPING: return "SLEEPING"; case TS_MONITOR: return "MONITOR"; case TS_WAIT: return "WAIT"; default: return "?UNKNOWN?"; } };