| Index: experimental/windows_debugger/debugger/test_debugger/debug_debug_event2.cpp
|
| diff --git a/experimental/windows_debugger/debugger/test_debugger/debug_debug_event2.cpp b/experimental/windows_debugger/debugger/test_debugger/debug_debug_event2.cpp
|
| deleted file mode 100644
|
| index dfe2facf5ebe477429fd9cf969f75dbaa716ce59..0000000000000000000000000000000000000000
|
| --- a/experimental/windows_debugger/debugger/test_debugger/debug_debug_event2.cpp
|
| +++ /dev/null
|
| @@ -1,303 +0,0 @@
|
| -#include "debug_debug_event2.h"
|
| -
|
| -namespace {
|
| -json::StructDefinitions loc_DEBUG_EVENT_struct_defs;
|
| -json::Object* CreateFromEXCEPTION_RECORD(const EXCEPTION_RECORD& er);
|
| -} // namespace
|
| -
|
| -namespace debug {
|
| -json::StructDefinitions* DEBUG_EVENT_struct_defs = &loc_DEBUG_EVENT_struct_defs;
|
| -
|
| -json::Value* CONTEXT_ToJSON(CONTEXT ct) {
|
| - DEBUG_EVENT_ToJSON_Init();
|
| - return CreateFromStruct(&ct, "CONTEXT", loc_DEBUG_EVENT_struct_defs);
|
| -}
|
| -
|
| -json::Value* MEMORY_BASIC_INFORMATION32_ToJSON(MEMORY_BASIC_INFORMATION32 mbi) {
|
| - DEBUG_EVENT_ToJSON_Init();
|
| - return CreateFromStruct(&mbi, "MEMORY_BASIC_INFORMATION32", loc_DEBUG_EVENT_struct_defs);
|
| -}
|
| -
|
| -json::Value* DEBUG_EVENT_ToJSON(DEBUG_EVENT de) {
|
| - DEBUG_EVENT_ToJSON_Init();
|
| - json::Object* root_obj = CreateFromStruct(&de, "DEBUG_EVENT", loc_DEBUG_EVENT_struct_defs);
|
| - switch (de.dwDebugEventCode) {
|
| - case CREATE_PROCESS_DEBUG_EVENT: {
|
| - json::Object* u_obj = CreateFromStruct(&de.u.CreateProcessInfo, "CREATE_PROCESS_DEBUG_INFO", loc_DEBUG_EVENT_struct_defs);
|
| - root_obj->SetProperty("u.CreateProcessInfo", u_obj);
|
| - break;
|
| - }
|
| - case CREATE_THREAD_DEBUG_EVENT: {
|
| - json::Object* u_obj = CreateFromStruct(&de.u.CreateThread, "CREATE_THREAD_DEBUG_INFO", loc_DEBUG_EVENT_struct_defs);
|
| - root_obj->SetProperty("u.CreateThread", u_obj);
|
| - break;
|
| - }
|
| - case EXCEPTION_DEBUG_EVENT: {
|
| - json::Object* u_obj = CreateFromStruct(&de.u.Exception, "EXCEPTION_DEBUG_INFO", loc_DEBUG_EVENT_struct_defs);
|
| - json::Object* ex_obj = CreateFromEXCEPTION_RECORD(de.u.Exception.ExceptionRecord);
|
| - u_obj->SetProperty("u.Exception.ExceptionRecord", ex_obj);
|
| - root_obj->SetProperty("u.Exception", u_obj);
|
| - break;
|
| - }
|
| - case EXIT_PROCESS_DEBUG_EVENT: {
|
| - json::Object* u_obj = CreateFromStruct(&de.u.ExitProcess, "EXIT_PROCESS_DEBUG_INFO", loc_DEBUG_EVENT_struct_defs);
|
| - root_obj->SetProperty("u.ExitProcess", u_obj);
|
| - break;
|
| - }
|
| - case EXIT_THREAD_DEBUG_EVENT: {
|
| - json::Object* u_obj = CreateFromStruct(&de.u.ExitThread, "EXIT_THREAD_DEBUG_INFO", loc_DEBUG_EVENT_struct_defs);
|
| - root_obj->SetProperty("u.ExitThread", u_obj);
|
| - break;
|
| - }
|
| - case LOAD_DLL_DEBUG_EVENT: {
|
| - json::Object* u_obj = CreateFromStruct(&de.u.LoadDll, "LOAD_DLL_DEBUG_INFO", loc_DEBUG_EVENT_struct_defs);
|
| - root_obj->SetProperty("u.LoadDll", u_obj);
|
| - break;
|
| - }
|
| - case OUTPUT_DEBUG_STRING_EVENT: {
|
| - json::Object* u_obj = CreateFromStruct(&de.u.DebugString, "OUTPUT_DEBUG_STRING_INFO", loc_DEBUG_EVENT_struct_defs);
|
| - root_obj->SetProperty("u.DebugString", u_obj);
|
| - break;
|
| - }
|
| - case RIP_EVENT: {
|
| - json::Object* u_obj = CreateFromStruct(&de.u.RipInfo, "RIP_INFO", loc_DEBUG_EVENT_struct_defs);
|
| - root_obj->SetProperty("u.RipInfo", u_obj);
|
| - break;
|
| - }
|
| - case UNLOAD_DLL_DEBUG_EVENT: {
|
| - json::Object* u_obj = CreateFromStruct(&de.u.UnloadDll, "UNLOAD_DLL_DEBUG_INFO", loc_DEBUG_EVENT_struct_defs);
|
| - root_obj->SetProperty("u.UnloadDll", u_obj);
|
| - break;
|
| - }
|
| - }
|
| - return root_obj;
|
| -}
|
| -
|
| -void DEBUG_EVENT_ToJSON(DEBUG_EVENT de, std::string* text_out) {
|
| - json::StructTextCreator text_creator;
|
| - text_creator.SetGenerateComments(true, &loc_DEBUG_EVENT_struct_defs);
|
| - json::Value* root_obj = DEBUG_EVENT_ToJSON(de);
|
| - text_creator.CreateText(*root_obj, text_out);
|
| - delete root_obj;
|
| -}
|
| -
|
| -void DEBUG_EVENT_ToJSON_Init() {
|
| - static bool initialized = false;
|
| - if (initialized) return;
|
| -
|
| - const char* dwDebugEventCode_enums =
|
| - "3:CREATE_PROCESS_DEBUG_EVENT,2:CREATE_THREAD_DEBUG_EVENT,1:EXCEPTION_DEBUG_EVENT,"
|
| - "5:EXIT_PROCESS_DEBUG_EVENT,4:EXIT_THREAD_DEBUG_EVENT,6:LOAD_DLL_DEBUG_EVENT,"
|
| - "8:OUTPUT_DEBUG_STRING_EVENT,9:RIP_EVENT,7:UNLOAD_DLL_DEBUG_EVENT";
|
| -
|
| - json::StructDefinitions* defs = &loc_DEBUG_EVENT_struct_defs;
|
| - START_STRUCT_DEF(DEBUG_EVENT);
|
| - DEF_ENUM_FIELD(dwDebugEventCode, dwDebugEventCode_enums);
|
| - DEF_INT_FIELD(dwProcessId);
|
| - DEF_INT_FIELD(dwThreadId);
|
| - STOP_STRUCT_DEF;
|
| -
|
| - START_STRUCT_DEF(CREATE_PROCESS_DEBUG_INFO);
|
| - DEF_HANDLE_FIELD(hFile);
|
| - DEF_HANDLE_FIELD(hProcess);
|
| - DEF_HANDLE_FIELD(hThread);
|
| - DEF_PTR_FIELD(lpBaseOfImage);
|
| - DEF_INT_FIELD(dwDebugInfoFileOffset);
|
| - DEF_INT_FIELD(nDebugInfoSize);
|
| - DEF_PTR_FIELD(lpThreadLocalBase);
|
| - DEF_PTR_FIELD(lpStartAddress);
|
| - //DEF_USTR_FIELD(lpImageName, fUnicode);
|
| - DEF_INT_FIELD(lpImageName); //TODO: test only!
|
| - STOP_STRUCT_DEF;
|
| -
|
| - START_STRUCT_DEF(CREATE_THREAD_DEBUG_INFO);
|
| - DEF_HANDLE_FIELD(hThread);
|
| - DEF_PTR_FIELD(lpThreadLocalBase);
|
| - DEF_PTR_FIELD(lpStartAddress);
|
| - STOP_STRUCT_DEF;
|
| -
|
| - START_STRUCT_DEF(EXCEPTION_DEBUG_INFO);
|
| - DEF_INT_FIELD(dwFirstChance);
|
| - STOP_STRUCT_DEF;
|
| -
|
| - std::string ex_code_enums;
|
| - ADD_INT_C(EXCEPTION_ACCESS_VIOLATION, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_DATATYPE_MISALIGNMENT, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_BREAKPOINT, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_SINGLE_STEP, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_ARRAY_BOUNDS_EXCEEDED, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_FLT_DENORMAL_OPERAND, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_FLT_DIVIDE_BY_ZERO, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_FLT_INEXACT_RESULT, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_FLT_INVALID_OPERATION, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_FLT_OVERFLOW, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_FLT_STACK_CHECK, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_FLT_UNDERFLOW, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_INT_DIVIDE_BY_ZERO, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_INT_OVERFLOW, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_PRIV_INSTRUCTION, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_IN_PAGE_ERROR, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_ILLEGAL_INSTRUCTION, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_NONCONTINUABLE_EXCEPTION, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_STACK_OVERFLOW, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_INVALID_DISPOSITION, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_GUARD_PAGE, ex_code_enums);
|
| - ADD_INT_C(EXCEPTION_INVALID_HANDLE, ex_code_enums);
|
| - ADD_INT_C(CONTROL_C_EXIT, ex_code_enums);
|
| - ADD_INT_C(VS2008_THREAD_INFO, ex_code_enums);
|
| -
|
| - START_STRUCT_DEF(EXCEPTION_RECORD);
|
| - DEF_ENUM_FIELD(ExceptionCode, ex_code_enums);
|
| - DEF_ENUM_FIELD(ExceptionFlags, "0:EXCEPTION_CONTINUABLE,1:EXCEPTION_NONCONTINUABLE");
|
| - DEF_PTR_FIELD(ExceptionAddress);
|
| - STOP_STRUCT_DEF;
|
| -
|
| -
|
| - START_STRUCT_DEF(EXIT_PROCESS_DEBUG_INFO);
|
| - DEF_INT_FIELD(dwExitCode);
|
| - STOP_STRUCT_DEF;
|
| -
|
| - START_STRUCT_DEF(EXIT_THREAD_DEBUG_INFO);
|
| - DEF_INT_FIELD(dwExitCode);
|
| - STOP_STRUCT_DEF;
|
| -
|
| - START_STRUCT_DEF(LOAD_DLL_DEBUG_INFO);
|
| - DEF_HANDLE_FIELD(hFile);
|
| - DEF_PTR_FIELD(lpBaseOfDll);
|
| - DEF_INT_FIELD(dwDebugInfoFileOffset);
|
| - DEF_INT_FIELD(nDebugInfoSize);
|
| -// DEF_USTR_FIELD(lpImageName, fUnicode);
|
| - DEF_INT_FIELD(lpImageName); //TODO: test only!
|
| -
|
| - STOP_STRUCT_DEF;
|
| -
|
| - START_STRUCT_DEF(OUTPUT_DEBUG_STRING_INFO);
|
| - DEF_USTR_FIELD(lpDebugStringData, fUnicode);
|
| - DEF_INT_FIELD(nDebugStringLength);
|
| - STOP_STRUCT_DEF;
|
| -
|
| - START_STRUCT_DEF(RIP_INFO);
|
| - DEF_INT_FIELD(dwError);
|
| - DEF_ENUM_FIELD(dwType, "1:SLE_ERROR,2:SLE_MINORERROR,3:SLE_WARNING");
|
| - STOP_STRUCT_DEF;
|
| -
|
| - START_STRUCT_DEF(UNLOAD_DLL_DEBUG_INFO);
|
| - DEF_PTR_FIELD(lpBaseOfDll);
|
| - STOP_STRUCT_DEF;
|
| -
|
| - if (1 ) {
|
| - std::string protect_enums;
|
| - ADD_INT_C(PAGE_EXECUTE, protect_enums);
|
| - ADD_INT_C(PAGE_EXECUTE_READ, protect_enums);
|
| - ADD_INT_C(PAGE_EXECUTE_READWRITE, protect_enums);
|
| - ADD_INT_C(PAGE_EXECUTE_WRITECOPY, protect_enums);
|
| - ADD_INT_C(PAGE_NOACCESS, protect_enums);
|
| - ADD_INT_C(PAGE_READONLY, protect_enums);
|
| - ADD_INT_C(PAGE_READWRITE, protect_enums);
|
| - ADD_INT_C(PAGE_WRITECOPY, protect_enums);
|
| - ADD_INT_C(PAGE_GUARD, protect_enums);
|
| - ADD_INT_C(PAGE_NOCACHE, protect_enums);
|
| - ADD_INT_C(PAGE_WRITECOMBINE, protect_enums);
|
| -
|
| - std::string state_enums;
|
| - ADD_INT_C(MEM_COMMIT, state_enums);
|
| - ADD_INT_C(MEM_FREE, state_enums);
|
| - ADD_INT_C(MEM_RESERVE, state_enums);
|
| -
|
| - std::string type_enums;
|
| - ADD_INT_C(MEM_IMAGE, state_enums);
|
| - ADD_INT_C(MEM_MAPPED, state_enums);
|
| - ADD_INT_C(MEM_PRIVATE, state_enums);
|
| -
|
| - START_STRUCT_DEF(MEMORY_BASIC_INFORMATION32);
|
| - DEF_PTR_FIELD(BaseAddress);
|
| - DEF_PTR_FIELD(AllocationBase);
|
| - DEF_ENUM_FIELD(AllocationProtect, protect_enums);
|
| - DEF_INT_FIELD(RegionSize);
|
| - DEF_ENUM_FIELD(State, state_enums);
|
| - DEF_ENUM_FIELD(Protect, protect_enums);
|
| - DEF_ENUM_FIELD(Type, type_enums);
|
| - STOP_STRUCT_DEF;
|
| - }
|
| -
|
| - std::string ContextFlags_enums;
|
| - ADD_INT_C(CONTEXT_CONTROL, ContextFlags_enums);
|
| - ADD_INT_C(CONTEXT_INTEGER, ContextFlags_enums);
|
| - ADD_INT_C(CONTEXT_SEGMENTS, ContextFlags_enums);
|
| - ADD_INT_C(CONTEXT_FLOATING_POINT, ContextFlags_enums);
|
| - ADD_INT_C(CONTEXT_DEBUG_REGISTERS, ContextFlags_enums);
|
| -
|
| -#ifdef _WIN64
|
| - START_STRUCT_DEF(CONTEXT);
|
| - DEF_ENUM_FIELD(ContextFlags, ContextFlags_enums);
|
| - DEF_INT_FIELD(Dr0);
|
| - DEF_INT_FIELD(Dr1);
|
| - DEF_INT_FIELD(Dr2);
|
| - DEF_INT_FIELD(Dr3);
|
| - DEF_INT_FIELD(Dr6);
|
| - DEF_INT_FIELD(Dr7);
|
| - DEF_INT_FIELD(SegGs);
|
| - DEF_INT_FIELD(SegFs);
|
| - DEF_INT_FIELD(SegEs);
|
| - DEF_INT_FIELD(SegDs);
|
| - DEF_INT_FIELD(Rdi);
|
| - DEF_INT_FIELD(Rsi);
|
| - DEF_INT_FIELD(Rbx);
|
| - DEF_INT_FIELD(Rdx);
|
| - DEF_INT_FIELD(Rcx);
|
| - DEF_INT_FIELD(Rax);
|
| - DEF_INT_FIELD(Rbp);
|
| - DEF_PTR_FIELD(Rip);
|
| - DEF_INT_FIELD(SegCs);
|
| - DEF_INT_FIELD(EFlags);
|
| - DEF_INT_FIELD(Rsp);
|
| - DEF_INT_FIELD(SegSs);
|
| - DEF_INT_FIELD(R8);
|
| - DEF_INT_FIELD(R9);
|
| - DEF_INT_FIELD(R10);
|
| - DEF_INT_FIELD(R11);
|
| - DEF_INT_FIELD(R12);
|
| - DEF_INT_FIELD(R13);
|
| - DEF_INT_FIELD(R14);
|
| - DEF_INT_FIELD(R15);
|
| - STOP_STRUCT_DEF;
|
| -#else
|
| - START_STRUCT_DEF(CONTEXT);
|
| - DEF_ENUM_FIELD(ContextFlags, ContextFlags_enums);
|
| - DEF_INT_FIELD(Dr0);
|
| - DEF_INT_FIELD(Dr1);
|
| - DEF_INT_FIELD(Dr2);
|
| - DEF_INT_FIELD(Dr3);
|
| - DEF_INT_FIELD(Dr6);
|
| - DEF_INT_FIELD(Dr7);
|
| - DEF_INT_FIELD(SegGs);
|
| - DEF_INT_FIELD(SegFs);
|
| - DEF_INT_FIELD(SegEs);
|
| - DEF_INT_FIELD(SegDs);
|
| - DEF_INT_FIELD(Edi);
|
| - DEF_INT_FIELD(Esi);
|
| - DEF_INT_FIELD(Ebx);
|
| - DEF_INT_FIELD(Edx);
|
| - DEF_INT_FIELD(Ecx);
|
| - DEF_INT_FIELD(Eax);
|
| - DEF_INT_FIELD(Ebp);
|
| - DEF_PTR_FIELD(Eip);
|
| - DEF_INT_FIELD(SegCs);
|
| - DEF_INT_FIELD(EFlags);
|
| - DEF_INT_FIELD(Esp);
|
| - DEF_INT_FIELD(SegSs);
|
| - STOP_STRUCT_DEF;
|
| -#endif
|
| -
|
| - initialized = true;
|
| -}
|
| -} // namespace debug
|
| -
|
| -namespace {
|
| -json::Object* CreateFromEXCEPTION_RECORD(const EXCEPTION_RECORD& er) {
|
| - json::Object* obj = CreateFromStruct(&er, "EXCEPTION_RECORD", loc_DEBUG_EVENT_struct_defs);
|
| - //TODO: implement
|
| - return obj;
|
| -}
|
| -} // namespace
|
| -
|
|
|