VirtualBox

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

Last change on this file since 92154 was 87788, checked in by vboxsync, 3 years ago

Debugger: Some early access to the DBGFR3FlowTrace* API for toying around, bugref:8650

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

© 2023 Oracle
ContactPrivacy policyTerms of Use