Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Side by Side Diff: experimental/windows_debugger/debugger/test_debugger/debug_debug_event2.cpp

Issue 10928195: First round of dead file removal (Closed) Base URL: https://github.com/samclegg/nativeclient-sdk.git@master
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 #include "debug_debug_event2.h"
2
3 namespace {
4 json::StructDefinitions loc_DEBUG_EVENT_struct_defs;
5 json::Object* CreateFromEXCEPTION_RECORD(const EXCEPTION_RECORD& er);
6 } // namespace
7
8 namespace debug {
9 json::StructDefinitions* DEBUG_EVENT_struct_defs = &loc_DEBUG_EVENT_struct_defs;
10
11 json::Value* CONTEXT_ToJSON(CONTEXT ct) {
12 DEBUG_EVENT_ToJSON_Init();
13 return CreateFromStruct(&ct, "CONTEXT", loc_DEBUG_EVENT_struct_defs);
14 }
15
16 json::Value* MEMORY_BASIC_INFORMATION32_ToJSON(MEMORY_BASIC_INFORMATION32 mbi) {
17 DEBUG_EVENT_ToJSON_Init();
18 return CreateFromStruct(&mbi, "MEMORY_BASIC_INFORMATION32", loc_DEBUG_EVENT_st ruct_defs);
19 }
20
21 json::Value* DEBUG_EVENT_ToJSON(DEBUG_EVENT de) {
22 DEBUG_EVENT_ToJSON_Init();
23 json::Object* root_obj = CreateFromStruct(&de, "DEBUG_EVENT", loc_DEBUG_EVENT_ struct_defs);
24 switch (de.dwDebugEventCode) {
25 case CREATE_PROCESS_DEBUG_EVENT: {
26 json::Object* u_obj = CreateFromStruct(&de.u.CreateProcessInfo, "CREATE_PR OCESS_DEBUG_INFO", loc_DEBUG_EVENT_struct_defs);
27 root_obj->SetProperty("u.CreateProcessInfo", u_obj);
28 break;
29 }
30 case CREATE_THREAD_DEBUG_EVENT: {
31 json::Object* u_obj = CreateFromStruct(&de.u.CreateThread, "CREATE_THREAD_ DEBUG_INFO", loc_DEBUG_EVENT_struct_defs);
32 root_obj->SetProperty("u.CreateThread", u_obj);
33 break;
34 }
35 case EXCEPTION_DEBUG_EVENT: {
36 json::Object* u_obj = CreateFromStruct(&de.u.Exception, "EXCEPTION_DEBUG_I NFO", loc_DEBUG_EVENT_struct_defs);
37 json::Object* ex_obj = CreateFromEXCEPTION_RECORD(de.u.Exception.Exception Record);
38 u_obj->SetProperty("u.Exception.ExceptionRecord", ex_obj);
39 root_obj->SetProperty("u.Exception", u_obj);
40 break;
41 }
42 case EXIT_PROCESS_DEBUG_EVENT: {
43 json::Object* u_obj = CreateFromStruct(&de.u.ExitProcess, "EXIT_PROCESS_DE BUG_INFO", loc_DEBUG_EVENT_struct_defs);
44 root_obj->SetProperty("u.ExitProcess", u_obj);
45 break;
46 }
47 case EXIT_THREAD_DEBUG_EVENT: {
48 json::Object* u_obj = CreateFromStruct(&de.u.ExitThread, "EXIT_THREAD_DEBU G_INFO", loc_DEBUG_EVENT_struct_defs);
49 root_obj->SetProperty("u.ExitThread", u_obj);
50 break;
51 }
52 case LOAD_DLL_DEBUG_EVENT: {
53 json::Object* u_obj = CreateFromStruct(&de.u.LoadDll, "LOAD_DLL_DEBUG_INFO ", loc_DEBUG_EVENT_struct_defs);
54 root_obj->SetProperty("u.LoadDll", u_obj);
55 break;
56 }
57 case OUTPUT_DEBUG_STRING_EVENT: {
58 json::Object* u_obj = CreateFromStruct(&de.u.DebugString, "OUTPUT_DEBUG_ST RING_INFO", loc_DEBUG_EVENT_struct_defs);
59 root_obj->SetProperty("u.DebugString", u_obj);
60 break;
61 }
62 case RIP_EVENT: {
63 json::Object* u_obj = CreateFromStruct(&de.u.RipInfo, "RIP_INFO", loc_DEBU G_EVENT_struct_defs);
64 root_obj->SetProperty("u.RipInfo", u_obj);
65 break;
66 }
67 case UNLOAD_DLL_DEBUG_EVENT: {
68 json::Object* u_obj = CreateFromStruct(&de.u.UnloadDll, "UNLOAD_DLL_DEBUG_ INFO", loc_DEBUG_EVENT_struct_defs);
69 root_obj->SetProperty("u.UnloadDll", u_obj);
70 break;
71 }
72 }
73 return root_obj;
74 }
75
76 void DEBUG_EVENT_ToJSON(DEBUG_EVENT de, std::string* text_out) {
77 json::StructTextCreator text_creator;
78 text_creator.SetGenerateComments(true, &loc_DEBUG_EVENT_struct_defs);
79 json::Value* root_obj = DEBUG_EVENT_ToJSON(de);
80 text_creator.CreateText(*root_obj, text_out);
81 delete root_obj;
82 }
83
84 void DEBUG_EVENT_ToJSON_Init() {
85 static bool initialized = false;
86 if (initialized) return;
87
88 const char* dwDebugEventCode_enums =
89 "3:CREATE_PROCESS_DEBUG_EVENT,2:CREATE_THREAD_DEBUG_EVENT,1:EXCEPTION_DEBU G_EVENT,"
90 "5:EXIT_PROCESS_DEBUG_EVENT,4:EXIT_THREAD_DEBUG_EVENT,6:LOAD_DLL_DEBUG_EVE NT,"
91 "8:OUTPUT_DEBUG_STRING_EVENT,9:RIP_EVENT,7:UNLOAD_DLL_DEBUG_EVENT";
92
93 json::StructDefinitions* defs = &loc_DEBUG_EVENT_struct_defs;
94 START_STRUCT_DEF(DEBUG_EVENT);
95 DEF_ENUM_FIELD(dwDebugEventCode, dwDebugEventCode_enums);
96 DEF_INT_FIELD(dwProcessId);
97 DEF_INT_FIELD(dwThreadId);
98 STOP_STRUCT_DEF;
99
100 START_STRUCT_DEF(CREATE_PROCESS_DEBUG_INFO);
101 DEF_HANDLE_FIELD(hFile);
102 DEF_HANDLE_FIELD(hProcess);
103 DEF_HANDLE_FIELD(hThread);
104 DEF_PTR_FIELD(lpBaseOfImage);
105 DEF_INT_FIELD(dwDebugInfoFileOffset);
106 DEF_INT_FIELD(nDebugInfoSize);
107 DEF_PTR_FIELD(lpThreadLocalBase);
108 DEF_PTR_FIELD(lpStartAddress);
109 //DEF_USTR_FIELD(lpImageName, fUnicode);
110 DEF_INT_FIELD(lpImageName); //TODO: test only!
111 STOP_STRUCT_DEF;
112
113 START_STRUCT_DEF(CREATE_THREAD_DEBUG_INFO);
114 DEF_HANDLE_FIELD(hThread);
115 DEF_PTR_FIELD(lpThreadLocalBase);
116 DEF_PTR_FIELD(lpStartAddress);
117 STOP_STRUCT_DEF;
118
119 START_STRUCT_DEF(EXCEPTION_DEBUG_INFO);
120 DEF_INT_FIELD(dwFirstChance);
121 STOP_STRUCT_DEF;
122
123 std::string ex_code_enums;
124 ADD_INT_C(EXCEPTION_ACCESS_VIOLATION, ex_code_enums);
125 ADD_INT_C(EXCEPTION_DATATYPE_MISALIGNMENT, ex_code_enums);
126 ADD_INT_C(EXCEPTION_BREAKPOINT, ex_code_enums);
127 ADD_INT_C(EXCEPTION_SINGLE_STEP, ex_code_enums);
128 ADD_INT_C(EXCEPTION_ARRAY_BOUNDS_EXCEEDED, ex_code_enums);
129 ADD_INT_C(EXCEPTION_FLT_DENORMAL_OPERAND, ex_code_enums);
130 ADD_INT_C(EXCEPTION_FLT_DIVIDE_BY_ZERO, ex_code_enums);
131 ADD_INT_C(EXCEPTION_FLT_INEXACT_RESULT, ex_code_enums);
132 ADD_INT_C(EXCEPTION_FLT_INVALID_OPERATION, ex_code_enums);
133 ADD_INT_C(EXCEPTION_FLT_OVERFLOW, ex_code_enums);
134 ADD_INT_C(EXCEPTION_FLT_STACK_CHECK, ex_code_enums);
135 ADD_INT_C(EXCEPTION_FLT_UNDERFLOW, ex_code_enums);
136 ADD_INT_C(EXCEPTION_INT_DIVIDE_BY_ZERO, ex_code_enums);
137 ADD_INT_C(EXCEPTION_INT_OVERFLOW, ex_code_enums);
138 ADD_INT_C(EXCEPTION_PRIV_INSTRUCTION, ex_code_enums);
139 ADD_INT_C(EXCEPTION_IN_PAGE_ERROR, ex_code_enums);
140 ADD_INT_C(EXCEPTION_ILLEGAL_INSTRUCTION, ex_code_enums);
141 ADD_INT_C(EXCEPTION_NONCONTINUABLE_EXCEPTION, ex_code_enums);
142 ADD_INT_C(EXCEPTION_STACK_OVERFLOW, ex_code_enums);
143 ADD_INT_C(EXCEPTION_INVALID_DISPOSITION, ex_code_enums);
144 ADD_INT_C(EXCEPTION_GUARD_PAGE, ex_code_enums);
145 ADD_INT_C(EXCEPTION_INVALID_HANDLE, ex_code_enums);
146 ADD_INT_C(CONTROL_C_EXIT, ex_code_enums);
147 ADD_INT_C(VS2008_THREAD_INFO, ex_code_enums);
148
149 START_STRUCT_DEF(EXCEPTION_RECORD);
150 DEF_ENUM_FIELD(ExceptionCode, ex_code_enums);
151 DEF_ENUM_FIELD(ExceptionFlags, "0:EXCEPTION_CONTINUABLE,1:EXCEPTION_NONCONTINU ABLE");
152 DEF_PTR_FIELD(ExceptionAddress);
153 STOP_STRUCT_DEF;
154
155
156 START_STRUCT_DEF(EXIT_PROCESS_DEBUG_INFO);
157 DEF_INT_FIELD(dwExitCode);
158 STOP_STRUCT_DEF;
159
160 START_STRUCT_DEF(EXIT_THREAD_DEBUG_INFO);
161 DEF_INT_FIELD(dwExitCode);
162 STOP_STRUCT_DEF;
163
164 START_STRUCT_DEF(LOAD_DLL_DEBUG_INFO);
165 DEF_HANDLE_FIELD(hFile);
166 DEF_PTR_FIELD(lpBaseOfDll);
167 DEF_INT_FIELD(dwDebugInfoFileOffset);
168 DEF_INT_FIELD(nDebugInfoSize);
169 // DEF_USTR_FIELD(lpImageName, fUnicode);
170 DEF_INT_FIELD(lpImageName); //TODO: test only!
171
172 STOP_STRUCT_DEF;
173
174 START_STRUCT_DEF(OUTPUT_DEBUG_STRING_INFO);
175 DEF_USTR_FIELD(lpDebugStringData, fUnicode);
176 DEF_INT_FIELD(nDebugStringLength);
177 STOP_STRUCT_DEF;
178
179 START_STRUCT_DEF(RIP_INFO);
180 DEF_INT_FIELD(dwError);
181 DEF_ENUM_FIELD(dwType, "1:SLE_ERROR,2:SLE_MINORERROR,3:SLE_WARNING");
182 STOP_STRUCT_DEF;
183
184 START_STRUCT_DEF(UNLOAD_DLL_DEBUG_INFO);
185 DEF_PTR_FIELD(lpBaseOfDll);
186 STOP_STRUCT_DEF;
187
188 if (1 ) {
189 std::string protect_enums;
190 ADD_INT_C(PAGE_EXECUTE, protect_enums);
191 ADD_INT_C(PAGE_EXECUTE_READ, protect_enums);
192 ADD_INT_C(PAGE_EXECUTE_READWRITE, protect_enums);
193 ADD_INT_C(PAGE_EXECUTE_WRITECOPY, protect_enums);
194 ADD_INT_C(PAGE_NOACCESS, protect_enums);
195 ADD_INT_C(PAGE_READONLY, protect_enums);
196 ADD_INT_C(PAGE_READWRITE, protect_enums);
197 ADD_INT_C(PAGE_WRITECOPY, protect_enums);
198 ADD_INT_C(PAGE_GUARD, protect_enums);
199 ADD_INT_C(PAGE_NOCACHE, protect_enums);
200 ADD_INT_C(PAGE_WRITECOMBINE, protect_enums);
201
202 std::string state_enums;
203 ADD_INT_C(MEM_COMMIT, state_enums);
204 ADD_INT_C(MEM_FREE, state_enums);
205 ADD_INT_C(MEM_RESERVE, state_enums);
206
207 std::string type_enums;
208 ADD_INT_C(MEM_IMAGE, state_enums);
209 ADD_INT_C(MEM_MAPPED, state_enums);
210 ADD_INT_C(MEM_PRIVATE, state_enums);
211
212 START_STRUCT_DEF(MEMORY_BASIC_INFORMATION32);
213 DEF_PTR_FIELD(BaseAddress);
214 DEF_PTR_FIELD(AllocationBase);
215 DEF_ENUM_FIELD(AllocationProtect, protect_enums);
216 DEF_INT_FIELD(RegionSize);
217 DEF_ENUM_FIELD(State, state_enums);
218 DEF_ENUM_FIELD(Protect, protect_enums);
219 DEF_ENUM_FIELD(Type, type_enums);
220 STOP_STRUCT_DEF;
221 }
222
223 std::string ContextFlags_enums;
224 ADD_INT_C(CONTEXT_CONTROL, ContextFlags_enums);
225 ADD_INT_C(CONTEXT_INTEGER, ContextFlags_enums);
226 ADD_INT_C(CONTEXT_SEGMENTS, ContextFlags_enums);
227 ADD_INT_C(CONTEXT_FLOATING_POINT, ContextFlags_enums);
228 ADD_INT_C(CONTEXT_DEBUG_REGISTERS, ContextFlags_enums);
229
230 #ifdef _WIN64
231 START_STRUCT_DEF(CONTEXT);
232 DEF_ENUM_FIELD(ContextFlags, ContextFlags_enums);
233 DEF_INT_FIELD(Dr0);
234 DEF_INT_FIELD(Dr1);
235 DEF_INT_FIELD(Dr2);
236 DEF_INT_FIELD(Dr3);
237 DEF_INT_FIELD(Dr6);
238 DEF_INT_FIELD(Dr7);
239 DEF_INT_FIELD(SegGs);
240 DEF_INT_FIELD(SegFs);
241 DEF_INT_FIELD(SegEs);
242 DEF_INT_FIELD(SegDs);
243 DEF_INT_FIELD(Rdi);
244 DEF_INT_FIELD(Rsi);
245 DEF_INT_FIELD(Rbx);
246 DEF_INT_FIELD(Rdx);
247 DEF_INT_FIELD(Rcx);
248 DEF_INT_FIELD(Rax);
249 DEF_INT_FIELD(Rbp);
250 DEF_PTR_FIELD(Rip);
251 DEF_INT_FIELD(SegCs);
252 DEF_INT_FIELD(EFlags);
253 DEF_INT_FIELD(Rsp);
254 DEF_INT_FIELD(SegSs);
255 DEF_INT_FIELD(R8);
256 DEF_INT_FIELD(R9);
257 DEF_INT_FIELD(R10);
258 DEF_INT_FIELD(R11);
259 DEF_INT_FIELD(R12);
260 DEF_INT_FIELD(R13);
261 DEF_INT_FIELD(R14);
262 DEF_INT_FIELD(R15);
263 STOP_STRUCT_DEF;
264 #else
265 START_STRUCT_DEF(CONTEXT);
266 DEF_ENUM_FIELD(ContextFlags, ContextFlags_enums);
267 DEF_INT_FIELD(Dr0);
268 DEF_INT_FIELD(Dr1);
269 DEF_INT_FIELD(Dr2);
270 DEF_INT_FIELD(Dr3);
271 DEF_INT_FIELD(Dr6);
272 DEF_INT_FIELD(Dr7);
273 DEF_INT_FIELD(SegGs);
274 DEF_INT_FIELD(SegFs);
275 DEF_INT_FIELD(SegEs);
276 DEF_INT_FIELD(SegDs);
277 DEF_INT_FIELD(Edi);
278 DEF_INT_FIELD(Esi);
279 DEF_INT_FIELD(Ebx);
280 DEF_INT_FIELD(Edx);
281 DEF_INT_FIELD(Ecx);
282 DEF_INT_FIELD(Eax);
283 DEF_INT_FIELD(Ebp);
284 DEF_PTR_FIELD(Eip);
285 DEF_INT_FIELD(SegCs);
286 DEF_INT_FIELD(EFlags);
287 DEF_INT_FIELD(Esp);
288 DEF_INT_FIELD(SegSs);
289 STOP_STRUCT_DEF;
290 #endif
291
292 initialized = true;
293 }
294 } // namespace debug
295
296 namespace {
297 json::Object* CreateFromEXCEPTION_RECORD(const EXCEPTION_RECORD& er) {
298 json::Object* obj = CreateFromStruct(&er, "EXCEPTION_RECORD", loc_DEBUG_EVENT_ struct_defs);
299 //TODO: implement
300 return obj;
301 }
302 } // namespace
303
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698