Tutorial : Add a debug command in bochs

Tutorial : Add a debug command in bochs

2014/11/15 Debugger 0

This tutorial teach you how to add a debug command in boots, you need to touch these files only:

  • debug.h
  • dbg_main.cc
  • lexer.l
  • parser.y

Step 1) First of all, you need to add your command (see below) to lexer.l, don’t add anything below the line “[A-Za-z_][A-Za-z0-9_]* { bxlval.sval = strdup(bxtext); return(BX_TOKEN_GENERIC); }”, because it will eat up anything, although you can compile but your command won’t work. The “gkd” is my own boots command, you can place any command name you like.

gkd			{ bxlval.sval = strdup(bxtext); return(BX_TOKEN_GKD); }

Step 2) I created my own token “BX_TOKEN_GKD” for my command, you need to add it to parser.y, so please add “%token BX_TOKEN_GKD_R” to it. You also need a handler for your command in the parser, add these to parser.y

gkd_command:
      BX_TOKEN_GKD '\n'
      {
        printf("GKD\n");
        some_function();
        free($1);
      }
    ;

Step 3) In the handler, i called “some_function”. You need to add the prototype to debug.h and add the function body to dbg_main.cc

So in debug.h, add “void some_function();”

And in dbg_main.cc, add these:

void some_function(int which_regs_mask)
{
printf(“my boots debug command\n”);
}

!!! Thats all