VirtualBox

source: vbox/trunk/src/VBox/Debugger/DBGCInternal.h@ 85570

Last change on this file since 85570 was 85121, checked in by vboxsync, 4 years ago

iprt/cdefs.h: Refactored the typedef use of DECLCALLBACK as well as DECLCALLBACKMEMBER to wrap the whole expression, similar to the DECLR?CALLBACKMEMBER macros. This allows adding a throw() at the end when compiling with the VC++ compiler to indicate that the callbacks won't throw anything, so we can stop supressing the C5039 warning about passing functions that can potential throw C++ exceptions to extern C code that can't necessarily cope with such (unwind,++). Introduced a few _EX variations that allows specifying different/no calling convention too, as that's handy when dynamically resolving host APIs. Fixed numerous places missing DECLCALLBACK and such. Left two angry @todos regarding use of CreateThread. bugref:9794

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 21.4 KB
Line 
1/* $Id: DBGCInternal.h 85121 2020-07-08 19:33:26Z vboxsync $ */
2/** @file
3 * DBGC - Debugger Console, Internal Header File.
4 */
5
6/*
7 * Copyright (C) 2006-2020 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#ifndef DEBUGGER_INCLUDED_SRC_DBGCInternal_h
19#define DEBUGGER_INCLUDED_SRC_DBGCInternal_h
20#ifndef RT_WITHOUT_PRAGMA_ONCE
21# pragma once
22#endif
23
24
25/*******************************************************************************
26* Header Files *
27*******************************************************************************/
28#include <VBox/dbg.h>
29#include <VBox/err.h>
30
31
32/*******************************************************************************
33* Structures and Typedefs *
34*******************************************************************************/
35
36/**
37 * Debugger console per breakpoint data.
38 */
39typedef struct DBGCBP
40{
41 /** Pointer to the next breakpoint in the list. */
42 struct DBGCBP *pNext;
43 /** The breakpoint identifier. */
44 uint32_t iBp;
45 /** The size of the command. */
46 size_t cchCmd;
47 /** The command to execute when the breakpoint is hit. */
48 char szCmd[1];
49} DBGCBP;
50/** Pointer to a breakpoint. */
51typedef DBGCBP *PDBGCBP;
52
53
54typedef enum DBGCEVTSTATE
55{
56 kDbgcEvtState_Invalid = 0,
57 kDbgcEvtState_Disabled,
58 kDbgcEvtState_Enabled,
59 kDbgcEvtState_Notify
60} DBGCEVTSTATE;
61
62/**
63 * Debugger console per event configuration.
64 */
65typedef struct DBGCEVTCFG
66{
67 /** The event state. */
68 DBGCEVTSTATE enmState;
69 /** The size of the command. */
70 size_t cchCmd;
71 /** The command to execute when the event occurs. */
72 char szCmd[1];
73} DBGCEVTCFG;
74/** Pointer to a event configuration. */
75typedef DBGCEVTCFG *PDBGCEVTCFG;
76/** Pointer to a const event configuration. */
77typedef DBGCEVTCFG const *PCDBGCEVTCFG;
78
79
80/**
81 * Named variable.
82 *
83 * Always allocated from heap in one single block.
84 */
85typedef struct DBGCNAMEDVAR
86{
87 /** The variable. */
88 DBGCVAR Var;
89 /** Its name. */
90 char szName[1];
91} DBGCNAMEDVAR;
92/** Pointer to named variable. */
93typedef DBGCNAMEDVAR *PDBGCNAMEDVAR;
94
95
96/**
97 * Debugger console status
98 */
99typedef enum DBGCSTATUS
100{
101 /** Normal status, .*/
102 DBGC_HALTED
103
104} DBGCSTATUS;
105
106
107/**
108 * Debugger console instance data.
109 */
110typedef struct DBGC
111{
112 /** Command helpers. */
113 DBGCCMDHLP CmdHlp;
114 /** Wrappers for DBGF output. */
115 DBGFINFOHLP DbgfOutputHlp;
116 /** Pointer to backend callback structure. */
117 PDBGCBACK pBack;
118
119 /**
120 * Output a bunch of characters.
121 *
122 * @returns VBox status code.
123 * @param pvUser Opaque user data from DBGC::pvOutputUser.
124 * @param pachChars Pointer to an array of utf-8 characters.
125 * @param cbChars Number of bytes in the character array pointed to by pachChars.
126 */
127 DECLR3CALLBACKMEMBER(int, pfnOutput, (void *pvUser, const char *pachChars, size_t cbChars));
128 /** Opqaue user data passed to DBGC::pfnOutput. */
129 void *pvOutputUser;
130
131 /** Pointer to the current VM. */
132 PVM pVM;
133 /** The user mode handle of the current VM. */
134 PUVM pUVM;
135 /** The ID of current virtual CPU. */
136 VMCPUID idCpu;
137 /** The current address space handle. */
138 RTDBGAS hDbgAs;
139 /** The current debugger emulation. */
140 const char *pszEmulation;
141 /** Pointer to the commands for the current debugger emulation. */
142 PCDBGCCMD paEmulationCmds;
143 /** The number of commands paEmulationCmds points to. */
144 uint32_t cEmulationCmds;
145 /** Pointer to the functions for the current debugger emulation. */
146 PCDBGCFUNC paEmulationFuncs;
147 /** The number of functions paEmulationFuncs points to. */
148 uint32_t cEmulationFuncs;
149 /** Log indicator. (If set we're writing the log to the console.) */
150 bool fLog;
151
152 /** Counter use to suppress the printing of the headers. */
153 uint8_t cPagingHierarchyDumps;
154 /** Indicates whether the register are terse or sparse. */
155 bool fRegTerse;
156
157 /** @name Stepping
158 * @{ */
159 /** Whether to display registers when tracing. */
160 bool fStepTraceRegs;
161 /** Number of multi-steps left, zero if not multi-stepping. */
162 uint32_t cMultiStepsLeft;
163 /** The multi-step stride length. */
164 uint32_t uMultiStepStrideLength;
165 /** The active multi-step command. */
166 PCDBGCCMD pMultiStepCmd;
167 /** @} */
168
169 /** Current disassembler position. */
170 DBGCVAR DisasmPos;
171 /** The flags that goes with DisasmPos. */
172 uint32_t fDisasm;
173 /** Current source position. (flat GC) */
174 DBGCVAR SourcePos;
175 /** Current memory dump position. */
176 DBGCVAR DumpPos;
177 /** Size of the previous dump element. */
178 unsigned cbDumpElement;
179 /** Points to DisasmPos, SourcePos or DumpPos depending on which was
180 * used last. */
181 PCDBGCVAR pLastPos;
182
183 /** Number of variables in papVars. */
184 unsigned cVars;
185 /** Array of global variables.
186 * Global variables can be referenced using the $ operator and set
187 * and unset using command with those names. */
188 PDBGCNAMEDVAR *papVars;
189
190 /** The list of breakpoints. (singly linked) */
191 PDBGCBP pFirstBp;
192
193 /** Software interrupt events. */
194 PDBGCEVTCFG apSoftInts[256];
195 /** Hardware interrupt events. */
196 PDBGCEVTCFG apHardInts[256];
197 /** Selectable events (first few entries are unused). */
198 PDBGCEVTCFG apEventCfgs[DBGFEVENT_END];
199
200 /** Save search pattern. */
201 uint8_t abSearch[256];
202 /** The length of the search pattern. */
203 uint32_t cbSearch;
204 /** The search unit */
205 uint32_t cbSearchUnit;
206 /** The max hits. */
207 uint64_t cMaxSearchHits;
208 /** The address to resume searching from. */
209 DBGFADDRESS SearchAddr;
210 /** What's left of the original search range. */
211 RTGCUINTPTR cbSearchRange;
212
213 /** @name Parsing and Execution
214 * @{ */
215
216 /** Input buffer. */
217 char achInput[2048];
218 /** To ease debugging. */
219 unsigned uInputZero;
220 /** Write index in the input buffer. */
221 unsigned iWrite;
222 /** Read index in the input buffer. */
223 unsigned iRead;
224 /** The number of lines in the buffer. */
225 unsigned cInputLines;
226 /** Indicates that we have a buffer overflow condition.
227 * This means that input is ignored up to the next newline. */
228 bool fInputOverflow;
229 /** Indicates whether or we're ready for input. */
230 bool fReady;
231 /** Scratch buffer position. */
232 char *pszScratch;
233 /** Scratch buffer. */
234 char achScratch[16384];
235 /** Argument array position. */
236 unsigned iArg;
237 /** Array of argument variables. */
238 DBGCVAR aArgs[100];
239
240 /** rc from the last dbgcHlpPrintfV(). */
241 int rcOutput;
242 /** The last character we wrote. */
243 char chLastOutput;
244
245 /** rc from the last command. */
246 int rcCmd;
247 /** @} */
248
249 /** The command history file (not yet implemented). */
250 char *pszHistoryFile;
251 /** The global debugger init script. */
252 char *pszGlobalInitScript;
253 /** The per VM debugger init script. */
254 char *pszLocalInitScript;
255} DBGC;
256/** Pointer to debugger console instance data. */
257typedef DBGC *PDBGC;
258
259/** Converts a Command Helper pointer to a pointer to DBGC instance data. */
260#define DBGC_CMDHLP2DBGC(pCmdHlp) ( (PDBGC)((uintptr_t)(pCmdHlp) - RT_UOFFSETOF(DBGC, CmdHlp)) )
261
262
263/**
264 * Chunk of external commands.
265 */
266typedef struct DBGCEXTCMDS
267{
268 /** Number of commands descriptors. */
269 unsigned cCmds;
270 /** Pointer to array of command descriptors. */
271 PCDBGCCMD paCmds;
272 /** Pointer to the next chunk. */
273 struct DBGCEXTCMDS *pNext;
274} DBGCEXTCMDS;
275/** Pointer to chunk of external commands. */
276typedef DBGCEXTCMDS *PDBGCEXTCMDS;
277
278
279/**
280 * Chunk of external functions.
281 */
282typedef struct DBGCEXTFUNCS
283{
284 /** Number of functions descriptors. */
285 uint32_t cFuncs;
286 /** Pointer to array of functions descriptors. */
287 PCDBGCFUNC paFuncs;
288 /** Pointer to the next chunk. */
289 struct DBGCEXTFUNCS *pNext;
290} DBGCEXTFUNCS;
291/** Pointer to chunk of external functions. */
292typedef DBGCEXTFUNCS *PDBGCEXTFUNCS;
293
294
295
296/**
297 * Unary operator handler function.
298 *
299 * @returns 0 on success.
300 * @returns VBox evaluation / parsing error code on failure.
301 * The caller does the bitching.
302 * @param pDbgc Debugger console instance data.
303 * @param pArg The argument.
304 * @param enmCat The desired result category. Can be ignored.
305 * @param pResult Where to store the result.
306 */
307typedef DECLCALLBACKTYPE(int, FNDBGCOPUNARY,(PDBGC pDbgc, PCDBGCVAR pArg, DBGCVARCAT enmCat, PDBGCVAR pResult));
308/** Pointer to a unary operator handler function. */
309typedef FNDBGCOPUNARY *PFNDBGCOPUNARY;
310
311
312/**
313 * Binary operator handler function.
314 *
315 * @returns 0 on success.
316 * @returns VBox evaluation / parsing error code on failure.
317 * The caller does the bitching.
318 * @param pDbgc Debugger console instance data.
319 * @param pArg1 The first argument.
320 * @param pArg2 The 2nd argument.
321 * @param pResult Where to store the result.
322 */
323typedef DECLCALLBACKTYPE(int, FNDBGCOPBINARY,(PDBGC pDbgc, PCDBGCVAR pArg1, PCDBGCVAR pArg2, PDBGCVAR pResult));
324/** Pointer to a binary operator handler function. */
325typedef FNDBGCOPBINARY *PFNDBGCOPBINARY;
326
327
328/**
329 * Operator descriptor.
330 */
331typedef struct DBGCOP
332{
333 /** Operator mnemonic. */
334 char szName[4];
335 /** Length of name. */
336 const unsigned cchName;
337 /** Whether or not this is a binary operator.
338 * Unary operators are evaluated right-to-left while binary are left-to-right. */
339 bool fBinary;
340 /** Precedence level. */
341 unsigned iPrecedence;
342 /** Unary operator handler. */
343 PFNDBGCOPUNARY pfnHandlerUnary;
344 /** Binary operator handler. */
345 PFNDBGCOPBINARY pfnHandlerBinary;
346 /** The category of the 1st argument.
347 * Set to DBGCVAR_CAT_ANY if anything goes. */
348 DBGCVARCAT enmCatArg1;
349 /** The category of the 2nd argument.
350 * Set to DBGCVAR_CAT_ANY if anything goes. */
351 DBGCVARCAT enmCatArg2;
352 /** Operator description. */
353 const char *pszDescription;
354} DBGCOP;
355/** Pointer to an operator descriptor. */
356typedef DBGCOP *PDBGCOP;
357/** Pointer to a const operator descriptor. */
358typedef const DBGCOP *PCDBGCOP;
359
360
361
362/** Pointer to symbol descriptor. */
363typedef struct DBGCSYM *PDBGCSYM;
364/** Pointer to const symbol descriptor. */
365typedef const struct DBGCSYM *PCDBGCSYM;
366
367/**
368 * Get builtin symbol.
369 *
370 * @returns 0 on success.
371 * @returns VBox evaluation / parsing error code on failure.
372 * The caller does the bitching.
373 * @param pSymDesc Pointer to the symbol descriptor.
374 * @param pCmdHlp Pointer to the command callback structure.
375 * @param enmType The result type.
376 * @param pResult Where to store the result.
377 */
378typedef DECLCALLBACKTYPE(int, FNDBGCSYMGET,(PCDBGCSYM pSymDesc, PDBGCCMDHLP pCmdHlp, DBGCVARTYPE enmType, PDBGCVAR pResult));
379/** Pointer to get function for a builtin symbol. */
380typedef FNDBGCSYMGET *PFNDBGCSYMGET;
381
382/**
383 * Set builtin symbol.
384 *
385 * @returns 0 on success.
386 * @returns VBox evaluation / parsing error code on failure.
387 * The caller does the bitching.
388 * @param pSymDesc Pointer to the symbol descriptor.
389 * @param pCmdHlp Pointer to the command callback structure.
390 * @param pValue The value to assign the symbol.
391 */
392typedef DECLCALLBACKTYPE(int, FNDBGCSYMSET,(PCDBGCSYM pSymDesc, PDBGCCMDHLP pCmdHlp, PCDBGCVAR pValue));
393/** Pointer to set function for a builtin symbol. */
394typedef FNDBGCSYMSET *PFNDBGCSYMSET;
395
396
397/**
398 * Symbol description (for builtin symbols).
399 */
400typedef struct DBGCSYM
401{
402 /** Symbol name. */
403 const char *pszName;
404 /** Get function. */
405 PFNDBGCSYMGET pfnGet;
406 /** Set function. (NULL if readonly) */
407 PFNDBGCSYMSET pfnSet;
408 /** User data. */
409 unsigned uUser;
410} DBGCSYM;
411
412
413/** Selectable debug event kind. */
414typedef enum
415{
416 kDbgcSxEventKind_Plain,
417 kDbgcSxEventKind_Interrupt
418} DBGCSXEVENTKIND;
419
420/**
421 * Selectable debug event name / type lookup table entry.
422 *
423 * This also contains the default setting and an alternative name.
424 */
425typedef struct DBGCSXEVT
426{
427 /** The event type. */
428 DBGFEVENTTYPE enmType;
429 /** The event name. */
430 const char *pszName;
431 /** Alternative event name (optional). */
432 const char *pszAltNm;
433 /** The kind of event. */
434 DBGCSXEVENTKIND enmKind;
435 /** The default state. */
436 DBGCEVTSTATE enmDefault;
437 /** Flags, DBGCSXEVT_F_XXX. */
438 uint32_t fFlags;
439 /** Description for use when reporting the event, optional. */
440 const char *pszDesc;
441} DBGCSXEVT;
442/** Pointer to a constant selectable debug event descriptor. */
443typedef DBGCSXEVT const *PCDBGCSXEVT;
444
445/** @name DBGCSXEVT_F_XXX
446 * @{ */
447#define DBGCSXEVT_F_TAKE_ARG RT_BIT_32(0)
448/** Windows bugcheck, should take 5 arguments. */
449#define DBGCSXEVT_F_BUGCHECK RT_BIT_32(1)
450/** @} */
451
452
453/**
454 * Control flow graph basic block dumper state
455 */
456typedef struct DBGCFLOWBBDUMP
457{
458 /** The basic block referenced. */
459 DBGFFLOWBB hFlowBb;
460 /** Cached start address. */
461 DBGFADDRESS AddrStart;
462 /** Target address. */
463 DBGFADDRESS AddrTarget;
464 /** Width of the basic block in chars. */
465 uint32_t cchWidth;
466 /** Height of the basic block in chars. */
467 uint32_t cchHeight;
468 /** X coordinate of the start. */
469 uint32_t uStartX;
470 /** Y coordinate of the start. */
471 uint32_t uStartY;
472} DBGCFLOWBBDUMP;
473/** Pointer to the control flow graph basic block dump state. */
474typedef DBGCFLOWBBDUMP *PDBGCFLOWBBDUMP;
475
476
477/**
478 * Control flow graph branch table dumper state.
479 */
480typedef struct DBGCFLOWBRANCHTBLDUMP
481{
482 /** The branch table referenced. */
483 DBGFFLOWBRANCHTBL hFlowBranchTbl;
484 /** Cached start address. */
485 DBGFADDRESS AddrStart;
486 /** Width of the branch table in chars. */
487 uint32_t cchWidth;
488 /** Height of the branch table in chars. */
489 uint32_t cchHeight;
490 /** X coordinate of the start. */
491 uint32_t uStartX;
492 /** Y coordinate of the start. */
493 uint32_t uStartY;
494} DBGCFLOWBRANCHTBLDUMP;
495/** Pointer to control flow graph branch table state. */
496typedef DBGCFLOWBRANCHTBLDUMP *PDBGCFLOWBRANCHTBLDUMP;
497
498/*******************************************************************************
499* Internal Functions *
500*******************************************************************************/
501int dbgcBpAdd(PDBGC pDbgc, RTUINT iBp, const char *pszCmd);
502int dbgcBpUpdate(PDBGC pDbgc, RTUINT iBp, const char *pszCmd);
503int dbgcBpDelete(PDBGC pDbgc, RTUINT iBp);
504PDBGCBP dbgcBpGet(PDBGC pDbgc, RTUINT iBp);
505int dbgcBpExec(PDBGC pDbgc, RTUINT iBp);
506
507void dbgcEvalInit(void);
508int dbgcEvalSub(PDBGC pDbgc, char *pszExpr, size_t cchExpr, DBGCVARCAT enmCategory, PDBGCVAR pResult);
509int dbgcEvalCommand(PDBGC pDbgc, char *pszCmd, size_t cchCmd, bool fNoExecute);
510int dbgcEvalScript(PDBGC pDbgc, const char *pszFilename, bool fAnnounce);
511
512int dbgcSymbolGet(PDBGC pDbgc, const char *pszSymbol, DBGCVARTYPE enmType, PDBGCVAR pResult);
513PCDBGCSYM dbgcLookupRegisterSymbol(PDBGC pDbgc, const char *pszSymbol);
514PCDBGCOP dbgcOperatorLookup(PDBGC pDbgc, const char *pszExpr, bool fPreferBinary, char chPrev);
515PCDBGCCMD dbgcCommandLookup(PDBGC pDbgc, const char *pachName, size_t cchName, bool fExternal);
516PCDBGCFUNC dbgcFunctionLookup(PDBGC pDbgc, const char *pachName, size_t cchName, bool fExternal);
517
518DECLCALLBACK(int) dbgcOpRegister(PDBGC pDbgc, PCDBGCVAR pArg, DBGCVARCAT enmCat, PDBGCVAR pResult);
519DECLCALLBACK(int) dbgcOpAddrFlat(PDBGC pDbgc, PCDBGCVAR pArg, DBGCVARCAT enmCat, PDBGCVAR pResult);
520DECLCALLBACK(int) dbgcOpAddrHost(PDBGC pDbgc, PCDBGCVAR pArg, DBGCVARCAT enmCat, PDBGCVAR pResult);
521DECLCALLBACK(int) dbgcOpAddrPhys(PDBGC pDbgc, PCDBGCVAR pArg, DBGCVARCAT enmCat, PDBGCVAR pResult);
522DECLCALLBACK(int) dbgcOpAddrHostPhys(PDBGC pDbgc, PCDBGCVAR pArg, DBGCVARCAT enmCat, PDBGCVAR pResult);
523
524void dbgcInitCmdHlp(PDBGC pDbgc);
525
526void dbgcEventInit(PDBGC pDbgc);
527void dbgcEventTerm(PDBGC pDbgc);
528
529/** Console ASCII screen handle. */
530typedef struct DBGCSCREENINT *DBGCSCREEN;
531/** Pointer to ASCII screen handle. */
532typedef DBGCSCREEN *PDBGCSCREEN;
533
534/**
535 * ASCII screen blit callback.
536 *
537 * @returns VBox status code. Any non VINF_SUCCESS status code will abort the dumping.
538 *
539 * @param psz The string to dump
540 * @param pvUser Opaque user data.
541 */
542typedef DECLCALLBACKTYPE(int, FNDGCSCREENBLIT,(const char *psz, void *pvUser));
543/** Pointer to a FNDGCSCREENBLIT. */
544typedef FNDGCSCREENBLIT *PFNDGCSCREENBLIT;
545
546/**
547 * ASCII screen supported colors.
548 */
549typedef enum DBGCSCREENCOLOR
550{
551 /** Invalid color. */
552 DBGCSCREENCOLOR_INVALID = 0,
553 /** Default color of the terminal. */
554 DBGCSCREENCOLOR_DEFAULT,
555 /** Black. */
556 DBGCSCREENCOLOR_BLACK,
557 DBGCSCREENCOLOR_BLACK_BRIGHT,
558 /** Red. */
559 DBGCSCREENCOLOR_RED,
560 DBGCSCREENCOLOR_RED_BRIGHT,
561 /** Green. */
562 DBGCSCREENCOLOR_GREEN,
563 DBGCSCREENCOLOR_GREEN_BRIGHT,
564 /** Yellow. */
565 DBGCSCREENCOLOR_YELLOW,
566 DBGCSCREENCOLOR_YELLOW_BRIGHT,
567 /** Blue. */
568 DBGCSCREENCOLOR_BLUE,
569 DBGCSCREENCOLOR_BLUE_BRIGHT,
570 /** Magenta. */
571 DBGCSCREENCOLOR_MAGENTA,
572 DBGCSCREENCOLOR_MAGENTA_BRIGHT,
573 /** Cyan. */
574 DBGCSCREENCOLOR_CYAN,
575 DBGCSCREENCOLOR_CYAN_BRIGHT,
576 /** White. */
577 DBGCSCREENCOLOR_WHITE,
578 DBGCSCREENCOLOR_WHITE_BRIGHT
579} DBGCSCREENCOLOR;
580/** Pointer to a screen color. */
581typedef DBGCSCREENCOLOR *PDBGCSCREENCOLOR;
582
583DECLHIDDEN(int) dbgcScreenAsciiCreate(PDBGCSCREEN phScreen, uint32_t cchWidth, uint32_t cchHeight);
584DECLHIDDEN(void) dbgcScreenAsciiDestroy(DBGCSCREEN hScreen);
585DECLHIDDEN(int) dbgcScreenAsciiBlit(DBGCSCREEN hScreen, PFNDGCSCREENBLIT pfnBlit, void *pvUser, bool fAddColors);
586DECLHIDDEN(int) dbgcScreenAsciiDrawLineVertical(DBGCSCREEN hScreen, uint32_t uX, uint32_t uStartY,
587 uint32_t uEndY, char ch, DBGCSCREENCOLOR enmColor);
588DECLHIDDEN(int) dbgcScreenAsciiDrawLineHorizontal(DBGCSCREEN hScreen, uint32_t uStartX, uint32_t uEndX,
589 uint32_t uY, char ch, DBGCSCREENCOLOR enmColor);
590DECLHIDDEN(int) dbgcScreenAsciiDrawCharacter(DBGCSCREEN hScreen, uint32_t uX, uint32_t uY, char ch,
591 DBGCSCREENCOLOR enmColor);
592DECLHIDDEN(int) dbgcScreenAsciiDrawString(DBGCSCREEN hScreen, uint32_t uX, uint32_t uY, const char *pszText,
593 DBGCSCREENCOLOR enmColor);
594
595/* For tstDBGCParser: */
596int dbgcCreate(PDBGC *ppDbgc, PDBGCBACK pBack, unsigned fFlags);
597int dbgcRun(PDBGC pDbgc);
598int dbgcProcessInput(PDBGC pDbgc, bool fNoExecute);
599void dbgcDestroy(PDBGC pDbgc);
600
601DECLHIDDEN(const char *) dbgcGetEventCtx(DBGFEVENTCTX enmCtx);
602DECLHIDDEN(PCDBGCSXEVT) dbgcEventLookup(DBGFEVENTTYPE enmType);
603
604DECLHIDDEN(int) dbgcGdbStubCreate(PUVM pUVM, PDBGCBACK pBack, unsigned fFlags);
605
606
607/*******************************************************************************
608* Global Variables *
609*******************************************************************************/
610extern const DBGCCMD g_aDbgcCmds[];
611extern const uint32_t g_cDbgcCmds;
612extern const DBGCFUNC g_aDbgcFuncs[];
613extern const uint32_t g_cDbgcFuncs;
614extern const DBGCCMD g_aCmdsCodeView[];
615extern const uint32_t g_cCmdsCodeView;
616extern const DBGCFUNC g_aFuncsCodeView[];
617extern const uint32_t g_cFuncsCodeView;
618extern const DBGCOP g_aDbgcOps[];
619extern const uint32_t g_cDbgcOps;
620extern const DBGCSXEVT g_aDbgcSxEvents[];
621extern const uint32_t g_cDbgcSxEvents;
622
623
624/*******************************************************************************
625* Defined Constants And Macros *
626*******************************************************************************/
627/** Locks the g_pExtCmdsHead and g_pExtFuncsHead lists for reading. */
628#define DBGCEXTLISTS_LOCK_RD() do { } while (0)
629/** Locks the g_pExtCmdsHead and g_pExtFuncsHead lists for writing. */
630#define DBGCEXTLISTS_LOCK_WR() do { } while (0)
631/** UnLocks the g_pExtCmdsHead and g_pExtFuncsHead lists after reading. */
632#define DBGCEXTLISTS_UNLOCK_RD() do { } while (0)
633/** UnLocks the g_pExtCmdsHead and g_pExtFuncsHead lists after writing. */
634#define DBGCEXTLISTS_UNLOCK_WR() do { } while (0)
635
636
637
638#endif /* !DEBUGGER_INCLUDED_SRC_DBGCInternal_h */
639
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette