Cc: Jiewen Yao <jiewen....@intel.com>
Cc: Pete Batard <p...@akeo.ie>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan...@intel.com>
---
 .../EbcDxe/EbcDebugger/EbcDebuggerConfig.c         |  21 ++
 .../EbcDxe/EbcDebugger/EdbDisasmSupport.h          | 338 +++++++++++++++++++++
 .../Universal/EbcDxe/EbcDebugger/EdbHook.c         |   9 +-
 .../Universal/EbcDxe/EbcDebugger/EdbSupport.h      | 251 ++++++++++++++-
 .../EbcDxe/EbcDebugger/EdbSupportString.c          | 108 ++++++-
 .../Universal/EbcDxe/EbcDebugger/EdbSupportUI.c    |  71 +++++
 .../Universal/EbcDxe/EbcDebugger/EdbSymbol.h       | 128 ++++++++
 MdeModulePkg/Universal/EbcDxe/EbcDebuggerHook.c    | 117 +++++++
 MdeModulePkg/Universal/EbcDxe/EbcDebuggerHook.h    | 129 +++++++-
 9 files changed, 1157 insertions(+), 15 deletions(-)

diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EbcDebuggerConfig.c 
b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EbcDebuggerConfig.c
index 248b1fc..2a123bf 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EbcDebuggerConfig.c
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EbcDebuggerConfig.c
@@ -16,10 +16,15 @@
 #include <Protocol/ShellParameters.h>
 
 #include "EdbCommon.h"
 #include "EdbSupport.h"
 
+/**
+
+  The function that displays the utility usage message.
+
+**/
 VOID
 PrintUsage (
   VOID
   )
 {
@@ -36,19 +41,35 @@ PrintUsage (
     L"\n"
     );
   return;
 }
 
+/**
+
+  The function is to show some information.
+
+  @param  DebuggerConfiguration    Point to the 
EFI_DEBUGGER_CONFIGURATION_PROTOCOL.
+
+**/
 VOID
 EdbShowInfo (
   EFI_DEBUGGER_CONFIGURATION_PROTOCOL *DebuggerConfiguration
   )
 {
   Print (L"Not supported!\n");
   return ;
 }
 
+/**
+
+  EdbConfigBreak function.
+
+  @param  DebuggerConfiguration    Point to the 
EFI_DEBUGGER_CONFIGURATION_PROTOCOL.
+  @param  Command                  Point to the command.
+  @param  CommandArg               The argument for this command.
+
+**/
 VOID
 EdbConfigBreak (
   EFI_DEBUGGER_CONFIGURATION_PROTOCOL *DebuggerConfiguration,
   CHAR16                              *Command,
   CHAR16                              *CommandArg
diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbDisasmSupport.h 
b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbDisasmSupport.h
index 702673b..801cbc1 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbDisasmSupport.h
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbDisasmSupport.h
@@ -31,203 +31,541 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER 
EXPRESS OR IMPLIED.
 #define EDB_INSTRUCTION_NAME_MAX_LENGTH     10
 #define EDB_INSTRUCTION_NAME_MAX_SIZE       (EDB_INSTRUCTION_NAME_MAX_LENGTH * 
sizeof(CHAR16))
 #define EDB_INSTRUCTION_CONTENT_MAX_LENGTH  30
 #define EDB_INSTRUCTION_CONTENT_MAX_SIZE    
(EDB_INSTRUCTION_CONTENT_MAX_LENGTH * sizeof(CHAR16))
 
+/**
+
+  Set offset for Instruction name and content.
+
+  @param  InstructionNameOffset     - Instruction name offset
+  @param  InstructionContentOffset  - Instruction content offset
+
+**/
 VOID
 EdbSetOffset (
   IN UINTN InstructionNameOffset,
   IN UINTN InstructionContentOffset
   );
 
+/**
+
+  Pre instruction string construction.
+
+  @return Instruction string
+
+**/
 CHAR16 *
 EdbPreInstructionString (
   VOID
   );
 
+/**
+
+  Post instruction string construction.
+
+  @return Instruction string
+
+**/
 CHAR16 *
 EdbPostInstructionString (
   VOID
   );
 
+/**
+
+  Print the instruction name.
+
+  @param  Name - instruction name
+
+  @return Instruction name offset
+
+**/
 UINTN
 EdbPrintInstructionName (
   IN CHAR16                 *Name
   );
 
+/**
+
+  Get Sign, NaturalUnits, and ConstantUnits of the WORD data.
+
+  @param  Data16        - WORD data
+  @param  NaturalUnits  - Natural Units of the WORD
+  @param  ConstantUnits - Constant Units of the WORD
+
+  @return Sign value of WORD
+
+**/
 BOOLEAN
 EdbGetNaturalIndex16 (
   IN  UINT16  Data16,
   OUT UINTN   *NaturalUnits,
   OUT UINTN   *ConstantUnits
   );
 
+/**
+
+  Get Sign, NaturalUnits, and ConstantUnits of the DWORD data.
+
+  @param  Data32        - DWORD data
+  @param  NaturalUnits  - Natural Units of the DWORD
+  @param  ConstantUnits - Constant Units of the DWORD
+
+  @return Sign value of DWORD
+
+**/
 BOOLEAN
 EdbGetNaturalIndex32 (
   IN  UINT32  Data32,
   OUT UINTN   *NaturalUnits,
   OUT UINTN   *ConstantUnits
   );
 
+/**
+
+  Get Sign, NaturalUnits, and ConstantUnits of the QWORD data.
+
+  @param  Data64        - QWORD data
+  @param  NaturalUnits  - Natural Units of the QWORD
+  @param  ConstantUnits - Constant Units of the QWORD
+
+  @return Sign value of QWORD
+
+**/
 BOOLEAN
 EdbGetNaturalIndex64 (
   IN  UINT64  Data64,
   OUT UINT64  *NaturalUnits,
   OUT UINT64  *ConstantUnits
   );
 
+/**
+
+  Print the hexical WORD raw index data to instruction content.
+
+  @param  Data16 - WORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintRawIndexData16 (
   IN UINT16                 Data16
   );
 
+/**
+
+  Print the hexical DWORD raw index data to instruction content.
+
+  @param  Data32 - DWORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintRawIndexData32 (
   IN UINT32                 Data32
   );
 
+/**
+
+  Print the hexical QWORD raw index data to instruction content.
+
+  @param  Data64 - QWORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintRawIndexData64 (
   IN UINT64                 Data64
   );
 
+/**
+
+  Print register 1 in operands.
+
+  @param  Operands - instruction operands
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintRegister1 (
   IN UINT8                  Operands
   );
 
+/**
+
+  Print register 2 in operands.
+
+  @param  Operands - instruction operands
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintRegister2 (
   IN UINT8                  Operands
   );
 
+/**
+
+  Print dedicated register 1 in operands.
+
+  @param Operands - instruction operands
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintDedicatedRegister1 (
   IN UINT8                  Operands
   );
 
+/**
+
+  Print dedicated register 2 in operands.
+
+  @param  Operands - instruction operands
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintDedicatedRegister2 (
   IN UINT8                  Operands
   );
 
+/**
+
+  Print the hexical UINTN index data to instruction content.
+
+  @param  Sign          - Signed bit of UINTN data
+  @param  NaturalUnits  - natural units of UINTN data
+  @param  ConstantUnits - natural units of UINTN data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintIndexData (
   IN BOOLEAN                Sign,
   IN UINTN                  NaturalUnits,
   IN UINTN                  ConstantUnits
   );
 
+/**
+
+  Print the hexical QWORD index data to instruction content.
+
+  @param  Sign          - Signed bit of QWORD data
+  @param  NaturalUnits  - natural units of QWORD data
+  @param  ConstantUnits - natural units of QWORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintIndexData64 (
   IN BOOLEAN                Sign,
   IN UINT64                 NaturalUnits,
   IN UINT64                 ConstantUnits
   );
 
+/**
+
+  Print the hexical BYTE immediate data to instruction content.
+
+  @param  Data - BYTE data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintImmData8 (
   IN UINT8                  Data
   );
 
+/**
+
+  Print the hexical WORD immediate data to instruction content.
+
+  @param  Data - WORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintImmData16 (
   IN UINT16                 Data
   );
 
+/**
+
+  Print the hexical DWORD immediate data to instruction content.
+
+  @param  Data - DWORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintImmData32 (
   IN UINT32                 Data
   );
 
+/**
+
+  Print the hexical QWORD immediate data to instruction content.
+
+  @param  Data - QWORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintImmData64 (
   IN UINT64                 Data
   );
 
+/**
+
+  Print the decimal UINTN immediate data to instruction content.
+
+  @param  Data - UINTN data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintImmDatan (
   IN UINTN                  Data
   );
 
+/**
+
+  Print the decimal QWORD immediate data to instruction content.
+
+  @param  Data64 - QWORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintImmData64n (
   IN UINT64                 Data64
   );
 
+/**
+
+  Print the hexical BYTE to instruction content.
+
+  @param  Data8 - BYTE data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintData8 (
   IN UINT8                  Data8
   );
 
+/**
+
+  Print the hexical WORD to instruction content.
+
+  @param  Data16 - WORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintData16 (
   IN UINT16                 Data16
   );
 
+/**
+
+  Print the hexical DWORD to instruction content.
+
+  @param  Data32 - DWORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintData32 (
   IN UINT32                 Data32
   );
 
+/**
+
+  Print the hexical QWORD to instruction content.
+
+  @param  Data64 - QWORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintData64 (
   IN UINT64                 Data64
   );
 
+/**
+
+  Print the decimal unsigned UINTN to instruction content.
+
+  @param  Data - unsigned UINTN data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintDatan (
   IN UINTN                  Data
   );
 
+/**
+
+  Print the decimal unsigned QWORD to instruction content.
+
+  @param  Data64 - unsigned QWORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintData64n (
   IN UINT64                 Data64
   );
 
+/**
+
+  Print the decimal signed BYTE to instruction content.
+
+  @param  Data8 - signed BYTE data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintData8s (
   IN UINT8                  Data8
   );
 
+/**
+
+  Print the decimal signed WORD to instruction content.
+
+  @param  Data16 - signed WORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintData16s (
   IN UINT16                 Data16
   );
 
+/**
+
+  Print the decimal signed DWORD to instruction content.
+
+  @param  Data32 - signed DWORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintData32s (
   IN UINT32                 Data32
   );
 
+/**
+
+  Print the decimal signed QWORD to instruction content.
+
+  @param  Data64 - signed QWORD data
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintData64s (
   IN UINT64                 Data64
   );
 
+/**
+
+  Print the comma to instruction content.
+
+  @return Instruction content offset
+
+**/
 UINTN
 EdbPrintComma (
   VOID
   );
 
+/**
+
+  Find the symbol string according to address, then print it.
+
+  @param  Address - instruction address
+
+  @retval 1 - symbol string is found and printed
+  @retval 0 - symbol string not found
+
+**/
 UINTN
 EdbFindAndPrintSymbol (
   IN UINTN                  Address
   );
 
+/**
+
+  Print the EBC byte code.
+
+  @param  InstructionAddress - instruction address
+  @param  InstructionNumber  - instruction number
+
+**/
 VOID
 EdbPrintRaw (
   IN EFI_PHYSICAL_ADDRESS   InstructionAddress,
   IN UINTN                  InstructionNumber
   );
 
+/**
+
+  Print the EBC asm code.
+
+  @param  DebuggerPrivate - EBC Debugger private data structure
+  @param  SystemContext   - EBC system context.
+
+  @retval EFI_SUCCESS - show disasm successfully
+
+**/
 EFI_STATUS
 EdbShowDisasm (
   IN     EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,
   IN     EFI_SYSTEM_CONTEXT        SystemContext
   );
 
+/**
+
+  Get register value accroding to the system context, and register index.
+
+  @param  SystemContext   - EBC system context.
+  @param  Index           - EBC register index
+
+  @return register value
+
+**/
 UINT64
 GetRegisterValue (
   IN     EFI_SYSTEM_CONTEXT        SystemContext,
   IN     UINT8                     Index
   );
diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbHook.c 
b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbHook.c
index 322dd25..7592def 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbHook.c
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbHook.c
@@ -276,10 +276,18 @@ EbcDebuggerPushStepEntry (
     mDebuggerPrivate.StepContext.FramePointer = FramePtr;
     mDebuggerPrivate.FeatureFlags &= ~EFI_DEBUG_FLAG_EBC_B_STEPOUT;
   }
 }
 
+
+/**
+  Notify the callback function when an event is triggered.
+
+  @param  Event                    Indicates the event that invoke this 
function.
+  @param  Context                  Indicates the calling context.
+
+**/
 VOID
 EFIAPI
 EbcDebuggerBreakEventFunc (
   IN EFI_EVENT                Event,
   IN VOID                     *Context
@@ -465,11 +473,10 @@ EbcDebuggerHookUnload (
   Currently do nothing here.
 
   @param  Handle           - The EbcImage handle.
 
 **/
-
 VOID
 EbcDebuggerHookEbcUnloadImage (
   IN EFI_HANDLE                  Handle
   )
 {
diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSupport.h 
b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSupport.h
index 8908718..68becd6 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSupport.h
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSupport.h
@@ -23,207 +23,456 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER 
EXPRESS OR IMPLIED.
 
 #define EFI_DEBUGGER_LINE_NUMBER_IN_PAGE  0x10
 
 #define EFI_DEBUG_MAX_PRINT_BUFFER   (80 * 4)
 
+/**
+
+  Convert hex string to uint.
+
+  @param  Str  -  The string
+
+**/
 UINTN
 EFIAPI
 Xtoi (
   CHAR16  *Str
   );
 
+/**
+
+  Convert hex string to uint.
+
+  @param  Str  -  The string
+
+**/
 UINT64
 EFIAPI
 LXtoi (
   CHAR16  *Str
   );
 
+/**
+
+  Convert hex string to uint.
+
+  @param Str  -  The string
+
+**/
 UINTN
 EFIAPI
 Atoi (
   CHAR16  *Str
   );
 
+/**
+
+  Convert hex string to uint.
+
+  @param  Str  -  The string
+
+**/
 UINTN
 EFIAPI
 AsciiXtoi (
   CHAR8  *Str
   );
 
+/**
+
+  Convert hex string to uint.
+
+  @param Str  -  The string
+
+**/
 UINTN
 EFIAPI
 AsciiAtoi (
   CHAR8  *Str
   );
 
+/**
+  Compare the Unicode and Ascii string pointed by String to the string pointed 
by String2.
+
+  @param String - Unicode String to process
+
+  @param String2 - Ascii string to process
+
+  @return Return a positive integer if String is lexicall greater than 
String2; Zero if
+  the two strings are identical; and a negative interger if String is lexically
+  less than String2.
+
+**/
 INTN
 EFIAPI
 StrCmpUnicodeAndAscii (
   IN CHAR16   *String,
   IN CHAR8    *String2
   );
 
+/**
+
+  Compare the Unicode string pointed by String to the string pointed by 
String2.
+
+  @param  String - Unicode String to process
+  @param  String2 - Unicode string to process
+
+  @return Return a positive integer if String is lexically greater than 
String2; Zero if
+  the two strings are identical; and a negative integer if String is lexically
+  less than String2.
+
+**/
 INTN
 EFIAPI
 StriCmp (
   IN CHAR16   *String,
   IN CHAR16   *String2
   );
 
+/**
+
+  Compare the Unicode and Ascii string pointed by String to the string pointed 
by String2.
+
+  @param  String - Unicode String to process
+  @param  String2 - Ascii string to process
+
+  @return Return a positive integer if String is lexically greater than 
String2; Zero if
+  the two strings are identical; and a negative integer if String is lexically
+  less than String2.
+
+**/
 INTN
 EFIAPI
 StriCmpUnicodeAndAscii (
   IN CHAR16   *String,
   IN CHAR8    *String2
   );
 
+/**
+
+  Verify if the string is end with the sub string.
+
+  @param  Str - The string where to search the sub string
+  @param  SubStr - The substring.
+
+**/
 BOOLEAN
 EFIAPI
 StrEndWith (
   IN CHAR16                       *Str,
   IN CHAR16                       *SubStr
   );
 
+/**
+  Duplicate a string.
+
+  @param  Src  The string to be duplicated.
+
+**/
 CHAR16 *
 EFIAPI
 StrDuplicate (
   IN CHAR16   *Src
   );
 
+/**
+
+  Find the next token after one or more specified characters.
+
+  @param  String    Point to the string where to find the substring.
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR16 *
 EFIAPI
 StrGetNewTokenLine (
   IN CHAR16                       *String,
   IN CHAR16                       *CharSet
   );
 
+/**
+
+  Find the next token after one or more specified characters.
+
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR16 *
 EFIAPI
 StrGetNextTokenLine (
   IN CHAR16                       *CharSet
   );
 
+/**
+
+  Find the next token after one specificed characters.
+
+  @param  String    Point to the string where to find the substring.
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR16 *
 EFIAPI
 StrGetNewTokenField (
   IN CHAR16                       *String,
   IN CHAR16                       *CharSet
   );
 
+/**
+
+  Find the next token after one specificed characters.
+
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR16 *
 EFIAPI
 StrGetNextTokenField (
   IN CHAR16                       *CharSet
   );
 
+/**
+
+  Patch a character to the end of a string.
+
+  @param  Buffer   The string to be patched.
+  @param  Patch    The patch character.
+
+**/
 VOID
 EFIAPI
 PatchForStrTokenAfter (
   IN CHAR16    *Buffer,
   IN CHAR16    Patch
   );
 
+/**
+  Patch a character at the beginning of a string.
+
+  @param  Buffer   The string to be patched.
+  @param  Patch    The patch character.
+
+**/
 VOID
 EFIAPI
 PatchForStrTokenBefore (
   IN CHAR16    *Buffer,
   IN CHAR16    Patch
   );
 
+/**
+
+  Find the next token after one or more specified characters.
+
+  @param  String    Point to the string where to find the substring.
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR8 *
 EFIAPI
 AsciiStrGetNewTokenLine (
   IN CHAR8                       *String,
   IN CHAR8                       *CharSet
   );
 
+/**
+
+  Find the next token after one or more specified characters.
+
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR8 *
 EFIAPI
 AsciiStrGetNextTokenLine (
   IN CHAR8                       *CharSet
   );
 
+/**
+
+  Find the next token after one specificed characters.
+
+  @param  String    Point to the string where to find the substring.
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR8 *
 EFIAPI
 AsciiStrGetNewTokenField (
   IN CHAR8                       *String,
   IN CHAR8                       *CharSet
   );
 
+/**
+
+  Find the next token after one specificed characters.
+
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR8 *
 EFIAPI
 AsciiStrGetNextTokenField (
   IN CHAR8                       *CharSet
   );
 
+/**
+
+  Patch a character to the end of a string.
+
+  @param  Buffer   The string to be patched.
+  @param  Patch    The patch character.
+
+**/
 VOID
 EFIAPI
 PatchForAsciiStrTokenAfter (
   IN CHAR8    *Buffer,
   IN CHAR8    Patch
   );
 
+/**
+  Patch a character at the beginning of a string.
+
+  @param  Buffer   The string to be patched.
+  @param  Patch    The patch character.
+
+**/
 VOID
 EFIAPI
 PatchForAsciiStrTokenBefore (
   IN CHAR8    *Buffer,
   IN CHAR8    Patch
   );
 
 /**
-Shell Library.
+
+  Shell Library.
+  Get user input.
+
+  @param  Prompt    The prompt string.
+  @param  InStr     Point to the input string.
+  @param  StrLen    The max length of string user can input.
+
 **/
 VOID
 EFIAPI
 Input (
   IN CHAR16    *Prompt OPTIONAL,
   OUT CHAR16   *InStr,
   IN UINTN     StrLen
   );
 
+/**
+
+  SetPageBreak.
+
+**/
 BOOLEAN
 EFIAPI
 SetPageBreak (
   VOID
   );
 
+/**
+  Print a Unicode string to the output device.
+
+  @param  Format    A Null-terminated Unicode format string.
+  @param  ...       The variable argument list that contains pointers to Null-
+                    terminated Unicode strings to be printed
+
+**/
 UINTN
 EFIAPI
 EDBPrint (
   IN CONST CHAR16  *Format,
   ...
   );
 
+/**
+  Print a Unicode string to the output buffer.
+
+  @param  Buffer          A pointer to the output buffer for the produced 
Null-terminated
+                          Unicode string.
+  @param  BufferSize      The size, in bytes, of the output buffer specified 
by StartOfBuffer.
+  @param  Format          A Null-terminated Unicode format string.
+  @param  ...             The variable argument list that contains pointers to 
Null-
+                          terminated Unicode strings to be printed
+
+**/
 UINTN
 EFIAPI
 EDBSPrint (
   OUT CHAR16        *Buffer,
   IN  INTN          BufferSize,
   IN  CONST CHAR16  *Format,
   ...
   );
 
+/**
+  Print a Unicode string to the output buffer with specified offset..
+
+  @param  Buffer          A pointer to the output buffer for the produced 
Null-terminated
+                          Unicode string.
+  @param  BufferSize      The size, in bytes, of the output buffer specified 
by StartOfBuffer.
+  @param  Offset          The offset of the buffer.
+  @param  Format          A Null-terminated Unicode format string.
+  @param  ...             The variable argument list that contains pointers to 
Null-
+                          terminated Unicode strings to be printed
+
+**/
 UINTN
 EFIAPI
 EDBSPrintWithOffset (
   OUT CHAR16        *Buffer,
   IN  INTN          BufferSize,
   IN  UINTN         Offset,
   IN  CONST CHAR16  *Format,
   ...
   );
 
+/**
+
+  Read a file.
+  If ScanFs is FLASE, it will use DebuggerPrivate->Vol as default Fs.
+  If ScanFs is TRUE, it will scan all FS and check the file.
+  If there is only one file match the name, it will be read.
+  If there is more than one file match the name, it will return Error.
+
+  @param  DebuggerPrivate - EBC Debugger private data structure
+  @param  FileName        - The file to be read.
+  @param  BufferSize      - The file buffer size
+  @param  Buffer          - The file buffer
+  @param  ScanFs          - Need Scan all FS
+
+  @retval EFI_SUCCESS    - read file successfully
+  @retval EFI_NOT_FOUND  - file not found
+  @retval EFI_NO_MAPPING - there is duplicated files found
+
+**/
 EFI_STATUS
 EFIAPI
 ReadFileToBuffer (
   IN  EFI_DEBUGGER_PRIVATE_DATA   *DebuggerPrivate,
   IN  CHAR16                      *FileName,
   OUT UINTN                       *BufferSize,
   OUT VOID                        **Buffer,
   IN  BOOLEAN                     ScanFs
   );
 
+/**
+
+  Get file name under this dir with index
+
+  @param  DebuggerPrivate - EBC Debugger private data structure
+  @param  DirName         - The dir to be read.
+  @param  FileName        - The file name pattern under this dir
+  @param  Index           - The file index under this dir
+
+  @return File Name which match the pattern and index.
+
+**/
 CHAR16 *
 EFIAPI
 GetFileNameUnderDir (
   IN  EFI_DEBUGGER_PRIVATE_DATA   *DebuggerPrivate,
   IN  CHAR16                      *DirName,
diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSupportString.c 
b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSupportString.c
index bb0626f..0a49d2f 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSupportString.c
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSupportString.c
@@ -83,11 +83,10 @@ Xtoi (
   Convert hex string to uint.
 
   @param  Str  -  The string
 
 **/
-
 UINT64
 EFIAPI
 LXtoi (
   CHAR16  *Str
   )
@@ -306,19 +305,33 @@ AsciiAtoi (
   }
 
   return RetVal;
 }
 
+/**
+
+  Convert the character to upper case.
+
+  @param  Chr    the character to be converted.
+
+**/
 STATIC
 CHAR16
 UnicodeToUpper (
   IN      CHAR16                    Chr
   )
 {
   return (Chr >= L'a' && Chr <= L'z') ? Chr - (L'a' - L'A') : Chr;
 }
 
+/**
+
+  Convert the character to upper case.
+
+  @param  Chr    the character to be converted.
+
+**/
 STATIC
 CHAR8
 AsciiToUpper (
   IN      CHAR8                     Chr
   )
@@ -518,11 +531,10 @@ StrSpn (
 
   @param  String    Point to the string where to find the substring.
   @param  CharSet   Point to the string to be found.
 
 **/
-
 CHAR16 *
 EFIAPI
 StrBrk (
   IN CHAR16                       *String,
   IN CHAR16                       *CharSet
@@ -587,11 +599,10 @@ StrTokenLine (
 
   @param  String    Point to the string where to find the substring.
   @param  CharSet   Point to the string to be found.
 
 **/
-
 CHAR16 *
 EFIAPI
 StrTokenField (
   IN CHAR16                       *String OPTIONAL,
   IN CHAR16                       *CharSet
@@ -619,48 +630,86 @@ StrTokenField (
 
   mFieldBuffer = End;
   return Begin;
 }
 
+/**
+
+  Find the next token after one or more specified characters.
+
+  @param  String    Point to the string where to find the substring.
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR16 *
 EFIAPI
 StrGetNewTokenLine (
   IN CHAR16                       *String,
   IN CHAR16                       *CharSet
   )
 {
   return StrTokenLine (String, CharSet);
 }
 
+/**
+
+  Find the next token after one or more specified characters.
+
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR16 *
 EFIAPI
 StrGetNextTokenLine (
   IN CHAR16                       *CharSet
   )
 {
   return StrTokenLine (NULL, CharSet);
 }
 
+/**
+
+  Find the next token after one specificed characters.
+
+  @param  String    Point to the string where to find the substring.
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR16 *
 EFIAPI
 StrGetNewTokenField (
   IN CHAR16                       *String,
   IN CHAR16                       *CharSet
   )
 {
   return StrTokenField (String, CharSet);
 }
 
+/**
+
+  Find the next token after one specificed characters.
+
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR16 *
 EFIAPI
 StrGetNextTokenField (
   IN CHAR16                       *CharSet
   )
 {
   return StrTokenField (NULL, CharSet);
 }
 
+/**
+
+  Patch a character to the end of a string.
+
+  @param  Buffer   The string to be patched.
+  @param  Patch    The patch character.
+
+**/
 VOID
 EFIAPI
 PatchForStrTokenAfter (
   IN CHAR16    *Buffer,
   IN CHAR16    Patch
@@ -687,10 +736,17 @@ PatchForStrTokenAfter (
   }
 
   return ;
 }
 
+/**
+  Patch a character at the beginning of a string.
+
+  @param  Buffer   The string to be patched.
+  @param  Patch    The patch character.
+
+**/
 VOID
 EFIAPI
 PatchForStrTokenBefore (
   IN CHAR16    *Buffer,
   IN CHAR16    Patch
@@ -829,11 +885,10 @@ AsciiStrTokenLine (
 
   @param  String    Point to the string where to find the substring.
   @param  CharSet   Point to the string to be found.
 
 **/
-
 CHAR8 *
 EFIAPI
 AsciiStrTokenField (
   IN CHAR8                       *String OPTIONAL,
   IN CHAR8                       *CharSet
@@ -861,48 +916,86 @@ AsciiStrTokenField (
 
   mAsciiFieldBuffer = End;
   return Begin;
 }
 
+/**
+
+  Find the next token after one or more specified characters.
+
+  @param  String    Point to the string where to find the substring.
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR8 *
 EFIAPI
 AsciiStrGetNewTokenLine (
   IN CHAR8                       *String,
   IN CHAR8                       *CharSet
   )
 {
   return AsciiStrTokenLine (String, CharSet);
 }
 
+/**
+
+  Find the next token after one or more specified characters.
+
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR8 *
 EFIAPI
 AsciiStrGetNextTokenLine (
   IN CHAR8                       *CharSet
   )
 {
   return AsciiStrTokenLine (NULL, CharSet);
 }
 
+/**
+
+  Find the next token after one specificed characters.
+
+  @param  String    Point to the string where to find the substring.
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR8 *
 EFIAPI
 AsciiStrGetNewTokenField (
   IN CHAR8                       *String,
   IN CHAR8                       *CharSet
   )
 {
   return AsciiStrTokenField (String, CharSet);
 }
 
+/**
+
+  Find the next token after one specificed characters.
+
+  @param  CharSet   Point to the string to be found.
+
+**/
 CHAR8 *
 EFIAPI
 AsciiStrGetNextTokenField (
   IN CHAR8                       *CharSet
   )
 {
   return AsciiStrTokenField (NULL, CharSet);
 }
 
+/**
+
+  Patch a character to the end of a string.
+
+  @param  Buffer   The string to be patched.
+  @param  Patch    The patch character.
+
+**/
 VOID
 EFIAPI
 PatchForAsciiStrTokenAfter (
   IN CHAR8    *Buffer,
   IN CHAR8    Patch
@@ -929,10 +1022,17 @@ PatchForAsciiStrTokenAfter (
   }
 
   return ;
 }
 
+/**
+  Patch a character at the beginning of a string.
+
+  @param  Buffer   The string to be patched.
+  @param  Patch    The patch character.
+
+**/
 VOID
 EFIAPI
 PatchForAsciiStrTokenBefore (
   IN CHAR8    *Buffer,
   IN CHAR8    Patch
diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSupportUI.c 
b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSupportUI.c
index 21d0dc9..14f8627 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSupportUI.c
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSupportUI.c
@@ -12,10 +12,23 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER 
EXPRESS OR IMPLIED.
 
 **/
 
 #include "Edb.h"
 
+/**
+  Set the current coordinates of the cursor position.
+
+  @param  ConOut        Point to EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.
+  @param  Column        The position to set the cursor to.
+  @param  Row           The position to set the cursor to.
+  @param  LineLength    Length of a line.
+  @param  TotalRow      Total row of a screen.
+  @param  Str           Point to the string.
+  @param  StrPos        The position of the string.
+  @param  Len           The length of the string.
+
+**/
 VOID
 EFIAPI
 SetCursorPosition (
   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL  *ConOut,
   IN  UINTN                           Column,
@@ -164,10 +177,19 @@ ConMoveCursorForward (
 }
 
 CHAR16 mBackupSpace[EFI_DEBUG_INPUS_BUFFER_SIZE];
 CHAR16 mInputBufferHistory[EFI_DEBUG_INPUS_BUFFER_SIZE];
 
+/**
+
+  Get user input.
+
+  @param  Prompt       The prompt string.
+  @param  InStr        Point to the input string.
+  @param  StrLength    The max length of string user can input.
+
+**/
 VOID
 EFIAPI
 Input (
   IN CHAR16    *Prompt OPTIONAL,
   OUT CHAR16   *InStr,
@@ -512,10 +534,23 @@ Input (
   // Return the data to the caller
   //
   return ;
 }
 
+/**
+  Set the current coordinates of the cursor position.
+
+  @param  ConOut        Point to EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.
+  @param  Column        The position to set the cursor to.
+  @param  Row           The position to set the cursor to.
+  @param  LineLength    Length of a line.
+  @param  TotalRow      Total row of a screen.
+  @param  Str           Point to the string.
+  @param  StrPos        The position of the string.
+  @param  Len           The length of the string.
+
+**/
 VOID
 EFIAPI
 SetCursorPosition (
   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut,
   IN  UINTN                           Column,
@@ -549,10 +584,15 @@ SetCursorPosition (
   }
 
   ConOut->SetCursorPosition (ConOut, 0, 0);
 }
 
+/**
+
+  SetPageBreak.
+
+**/
 BOOLEAN
 EFIAPI
 SetPageBreak (
   VOID
   )
@@ -618,10 +658,18 @@ SetPageBreak (
   }
 
   return OmitPrint;
 }
 
+/**
+  Print a Unicode string to the output device.
+
+  @param  Format    A Null-terminated Unicode format string.
+  @param  ...       The variable argument list that contains pointers to Null-
+                    terminated Unicode strings to be printed
+
+**/
 UINTN
 EFIAPI
 EDBPrint (
   IN CONST CHAR16  *Format,
   ...
@@ -643,10 +691,21 @@ EDBPrint (
   }
 
   return Return;
 }
 
+/**
+  Print a Unicode string to the output buffer.
+
+  @param  Buffer          A pointer to the output buffer for the produced 
Null-terminated
+                          Unicode string.
+  @param  BufferSize      The size, in bytes, of the output buffer specified 
by StartOfBuffer.
+  @param  Format          A Null-terminated Unicode format string.
+  @param  ...             The variable argument list that contains pointers to 
Null-
+                          terminated Unicode strings to be printed
+
+**/
 UINTN
 EFIAPI
 EDBSPrint (
   OUT CHAR16        *Buffer,
   IN  INTN          BufferSize,
@@ -664,10 +723,22 @@ EDBSPrint (
   VA_END (Marker);
 
   return Return;
 }
 
+/**
+  Print a Unicode string to the output buffer with specified offset..
+
+  @param  Buffer          A pointer to the output buffer for the produced 
Null-terminated
+                          Unicode string.
+  @param  BufferSize      The size, in bytes, of the output buffer specified 
by StartOfBuffer.
+  @param  Offset          The offset of the buffer.
+  @param  Format          A Null-terminated Unicode format string.
+  @param  ...             The variable argument list that contains pointers to 
Null-
+                          terminated Unicode strings to be printed
+
+**/
 UINTN
 EFIAPI
 EDBSPrintWithOffset (
   OUT CHAR16        *Buffer,
   IN  INTN          BufferSize,
diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSymbol.h 
b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSymbol.h
index c4c2858..2e8c5e2 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSymbol.h
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbSymbol.h
@@ -37,84 +37,212 @@ typedef enum {
   EdbEbcImageRvaSearchTypeFirst,
   EdbEbcImageRvaSearchTypeLast,
   EdbEbcImageRvaSearchTypeMax,
 } EDB_EBC_IMAGE_RVA_SEARCH_TYPE;
 
+/**
+
+  Find symbol by address.
+
+  @param  Address         - Symbol address
+  @param  Type            - Search type
+  @param  RetObject       - Symbol object
+  @param  RetEntry        - Symbol entry
+
+  @return Nearest symbol address
+
+**/
 UINTN
 EbdFindSymbolAddress (
   IN UINTN                       Address,
   IN EDB_MATCH_SYMBOL_TYPE       Type,
   OUT EFI_DEBUGGER_SYMBOL_OBJECT **Object,
   OUT EFI_DEBUGGER_SYMBOL_ENTRY  **Entry
   );
 
+/**
+
+  Load symbol file by name.
+
+  @param  DebuggerPrivate - EBC Debugger private data structure
+  @param  FileName        - Symbol file name
+  @param  BufferSize      - Symbol file buffer size
+  @param  Buffer          - Symbol file buffer
+
+  @retval EFI_SUCCESS - load symbol successfully
+
+**/
 EFI_STATUS
 EdbLoadSymbol (
   IN EFI_DEBUGGER_PRIVATE_DATA   *DebuggerPrivate,
   IN CHAR16                      *FileName,
   IN UINTN                       BufferSize,
   IN VOID                        *Buffer
   );
 
+/**
+
+  Unload symbol file by name.
+
+  @param  DebuggerPrivate - EBC Debugger private data structure
+  @param  FileName        - Symbol file name
+
+  @retval EFI_SUCCESS - unload symbol successfully
+
+**/
 EFI_STATUS
 EdbUnloadSymbol (
   IN EFI_DEBUGGER_PRIVATE_DATA   *DebuggerPrivate,
   IN CHAR16                      *FileName
   );
 
+/**
+
+  Patch symbol RVA.
+
+  @param  DebuggerPrivate - EBC Debugger private data structure
+  @param  FileName        - Symbol file name
+  @param  SearchType      - Search type for Object
+
+  @retval EFI_SUCCESS   - Patch symbol RVA successfully
+  @retval EFI_NOT_FOUND - Symbol RVA base not found
+
+**/
 EFI_STATUS
 EdbPatchSymbolRVA (
   IN EFI_DEBUGGER_PRIVATE_DATA     *DebuggerPrivate,
   IN CHAR16                        *FileName,
   IN EDB_EBC_IMAGE_RVA_SEARCH_TYPE SearchType
   );
 
+/**
+
+  Load code.
+
+  @param  DebuggerPrivate - EBC Debugger private data structure
+  @param  MapFileName     - Symbol file name
+  @param  FileName        - Code file name
+  @param  BufferSize      - Code file buffer size
+  @param  Buffer          - Code file buffer
+
+  @retval EFI_SUCCESS - Code loaded successfully
+
+**/
 EFI_STATUS
 EdbLoadCode (
   IN EFI_DEBUGGER_PRIVATE_DATA   *DebuggerPrivate,
   IN CHAR16                      *MapFileName,
   IN CHAR16                      *FileName,
   IN UINTN                       BufferSize,
   IN VOID                        *Buffer
   );
 
+/**
+
+  Unload code.
+
+  @param  DebuggerPrivate - EBC Debugger private data structure
+  @param  MapFileName     - Symbol file name
+  @param  FileName        - Code file name
+  @param  Buffer          - Code file buffer
+
+  @retval EFI_SUCCESS - Code unloaded successfully
+
+**/
 EFI_STATUS
 EdbUnloadCode (
   IN EFI_DEBUGGER_PRIVATE_DATA   *DebuggerPrivate,
   IN CHAR16                      *MapFileName,
   IN CHAR16                      *FileName,
   OUT VOID                       **Buffer
   );
 
+/**
+
+  Add code buffer.
+
+  @param  DebuggerPrivate - EBC Debugger private data structure
+  @param  MapFileName     - Symbol file name
+  @param  CodeFileName    - Code file name
+  @param  SourceBufferSize- Code buffer size
+  @param  SourceBuffer    - Code buffer
+
+  @retval EFI_SUCCESS - CodeBuffer added successfully
+
+**/
 EFI_STATUS
 EdbAddCodeBuffer (
   IN     EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,
   IN     CHAR16                    *MapFileName,
   IN     CHAR16                    *CodeFileName,
   IN     UINTN                     SourceBufferSize,
   IN     VOID                      *SourceBuffer
   );
 
+/**
+
+  Delete code buffer.
+
+  @param  DebuggerPrivate - EBC Debugger private data structure
+  @param  MapFileName     - Symbol file name
+  @param  CodeFileName    - Code file name
+  @param  SourceBuffer    - Code buffer
+
+  @retval EFI_SUCCESS - CodeBuffer deleted successfully
+
+**/
 EFI_STATUS
 EdbDeleteCodeBuffer (
   IN     EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,
   IN     CHAR16                    *MapFileName,
   IN     CHAR16                    *CodeFileName,
   IN     VOID                      *SourceBuffer
   );
 
+/**
+
+  Find the symbol string according to address.
+
+  @param  Address         - Symbol address
+
+  @return Symbol string
+
+**/
 CHAR8 *
 FindSymbolStr (
   IN UINTN Address
   );
 
+/**
+
+  Print source.
+
+  @param  Address         - Instruction address
+  @param  IsPrint         - Whether need to print
+
+  @retval 1 - find the source
+  @retval 0 - not find the source
+
+**/
 UINTN
 EdbPrintSource (
   IN UINTN     Address,
   IN BOOLEAN   IsPrint
   );
 
+/**
+
+  Convert a symbol to an address.
+
+  @param  Symbol          - Symbol name
+  @param  Address         - Symbol address
+
+  @retval EFI_SUCCESS    - symbol found and address returned.
+  @retval EFI_NOT_FOUND  - symbol not found
+  @retval EFI_NO_MAPPING - duplicated symbol not found
+
+**/
 EFI_STATUS
 Symboltoi (
   IN CHAR16   *Symbol,
   OUT UINTN   *Address
   );
diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebuggerHook.c 
b/MdeModulePkg/Universal/EbcDxe/EbcDebuggerHook.c
index 1594cec..c5a1934 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDebuggerHook.c
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDebuggerHook.c
@@ -16,139 +16,256 @@
 
 **/
 
 #include "EbcDebuggerHook.h"
 
+/**
+
+  The hook in InitializeEbcDriver.
+
+  @param Handle           - The EbcDebugProtocol handle.
+  @param EbcDebugProtocol - The EbcDebugProtocol interface.
+
+**/
 VOID
 EbcDebuggerHookInit (
   IN EFI_HANDLE                  Handle,
   IN EFI_DEBUG_SUPPORT_PROTOCOL  *EbcDebugProtocol
   )
 {
   return;
 }
 
+/**
+
+The hook in UnloadImage for EBC Interpreter.
+
+**/
 VOID
 EbcDebuggerHookUnload (
   VOID
   )
 {
   return;
 }
 
+/**
+
+  The hook in EbcUnloadImage.
+  Currently do nothing here.
+
+  @param  Handle          The EbcImage handle.
+
+**/
 VOID
 EbcDebuggerHookEbcUnloadImage (
   IN EFI_HANDLE                  Handle
   )
 {
   return;
 }
 
+/**
+
+  The hook in ExecuteEbcImageEntryPoint.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookExecuteEbcImageEntryPoint (
   IN VM_CONTEXT *VmPtr
   )
 {
   return;
 }
 
+/**
+
+  The hook in ExecuteEbcImageEntryPoint.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookEbcInterpret (
   IN VM_CONTEXT *VmPtr
   )
 {
   return;
 }
 
+/**
+  The hook in EbcExecute, before ExecuteFunction.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookExecuteStart (
   IN VM_CONTEXT *VmPtr
   )
 {
   return;
 }
 
+/**
+  The hook in EbcExecute, after ExecuteFunction.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookExecuteEnd (
   IN VM_CONTEXT *VmPtr
   )
 {
   return;
 }
 
+/**
+
+  The hook in ExecuteCALL, before move IP.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookCALLStart (
   IN VM_CONTEXT *VmPtr
   )
 {
   return;
 }
 
+/**
+
+  The hook in ExecuteCALL, after move IP.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookCALLEnd (
   IN VM_CONTEXT *VmPtr
   )
 {
   return;
 }
 
+/**
+
+  The hook in ExecuteCALL, before call EbcLLCALLEX.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookCALLEXStart (
   IN VM_CONTEXT *VmPtr
   )
 {
   return;
 }
 
+/**
+
+  The hook in ExecuteCALL, after call EbcLLCALLEX.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookCALLEXEnd (
   IN VM_CONTEXT *VmPtr
   )
 {
   return;
 }
 
+/**
+
+  The hook in ExecuteRET, before move IP.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookRETStart (
   IN VM_CONTEXT *VmPtr
   )
 {
   return;
 }
 
+/**
+
+  The hook in ExecuteRET, after move IP.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookRETEnd (
   IN VM_CONTEXT *VmPtr
   )
 {
   return;
 }
 
+/**
+
+  The hook in ExecuteJMP, before move IP.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookJMPStart (
   IN VM_CONTEXT *VmPtr
   )
 {
   return;
 }
 
+/**
+
+  The hook in ExecuteJMP, after move IP.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookJMPEnd (
   IN VM_CONTEXT *VmPtr
   )
 {
   return;
 }
 
+/**
+
+  The hook in ExecuteJMP8, before move IP.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookJMP8Start (
   IN VM_CONTEXT *VmPtr
   )
 {
   return;
 }
 
+/**
+
+  The hook in ExecuteJMP8, after move IP..
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookJMP8End (
   IN VM_CONTEXT *VmPtr
   )
 {
diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebuggerHook.h 
b/MdeModulePkg/Universal/EbcDxe/EbcDebuggerHook.h
index ad93fd7..cf81b4a 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDebuggerHook.h
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDebuggerHook.h
@@ -36,100 +36,211 @@ EbcDebugSignalException (
   IN EFI_EXCEPTION_TYPE                   ExceptionType,
   IN EXCEPTION_FLAGS                      ExceptionFlags,
   IN VM_CONTEXT                           *VmPtr
   );
 
-//
-// Hooks in EbcInt.c
-//
+/**
+
+  The hook in InitializeEbcDriver.
+
+  @param Handle           - The EbcDebugProtocol handle.
+  @param EbcDebugProtocol - The EbcDebugProtocol interface.
+
+**/
 VOID
 EbcDebuggerHookInit (
   IN EFI_HANDLE                  Handle,
   IN EFI_DEBUG_SUPPORT_PROTOCOL  *EbcDebugProtocol
   );
 
+/**
+
+The hook in UnloadImage for EBC Interpreter.
+
+**/
 VOID
 EbcDebuggerHookUnload (
   VOID
   );
 
+/**
+
+  The hook in EbcUnloadImage.
+  Currently do nothing here.
+
+  @param  Handle          The EbcImage handle.
+
+**/
 VOID
 EbcDebuggerHookEbcUnloadImage (
   IN EFI_HANDLE                  Handle
   );
 
-//
-// Hooks in EbcSupport.c
-//
+
+/**
+
+  Hooks in EbcSupport.c
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookExecuteEbcImageEntryPoint (
   IN VM_CONTEXT *VmPtr
   );
 
+/**
+
+  The hook in ExecuteEbcImageEntryPoint.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookEbcInterpret (
   IN VM_CONTEXT *VmPtr
   );
 
-//
-// Hooks in EbcExecute.c
-//
+
+/**
+  The hook in EbcExecute, before ExecuteFunction.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookExecuteStart (
   IN VM_CONTEXT *VmPtr
   );
 
+/**
+  The hook in EbcExecute, after ExecuteFunction.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookExecuteEnd (
   IN VM_CONTEXT *VmPtr
   );
 
+/**
+  The hook in ExecuteCALL, before move IP.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookCALLStart (
   IN VM_CONTEXT *VmPtr
   );
 
+/**
+
+  The hook in ExecuteCALL, after move IP.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookCALLEnd (
   IN VM_CONTEXT *VmPtr
   );
 
+/**
+
+  The hook in ExecuteCALL, before call EbcLLCALLEX.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookCALLEXStart (
   IN VM_CONTEXT *VmPtr
   );
 
+/**
+
+  The hook in ExecuteCALL, after call EbcLLCALLEX.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookCALLEXEnd (
   IN VM_CONTEXT *VmPtr
   );
 
+/**
+
+  The hook in ExecuteRET, before move IP.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookRETStart (
   IN VM_CONTEXT *VmPtr
   );
 
+/**
+
+  The hook in ExecuteRET, after move IP.
+  It will record trace information.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookRETEnd (
   IN VM_CONTEXT *VmPtr
   );
 
+
+/**
+
+  The hook in ExecuteJMP, before move IP.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookJMPStart (
   IN VM_CONTEXT *VmPtr
   );
 
+/**
+
+  The hook in ExecuteJMP, after move IP.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookJMPEnd (
   IN VM_CONTEXT *VmPtr
   );
 
+/**
+
+  The hook in ExecuteJMP8, before move IP.
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookJMP8Start (
   IN VM_CONTEXT *VmPtr
   );
 
+/**
+
+  The hook in ExecuteJMP8, after move IP..
+
+  @param  VmPtr - pointer to VM context.
+
+**/
 VOID
 EbcDebuggerHookJMP8End (
   IN VM_CONTEXT *VmPtr
   );
 
-- 
1.9.5.msysgit.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to