示例#1
0
文件: debug.c 项目: gillotte/gxgeo
void debug_interf(void)
{
    char in_buf[256];
    char val[32];
    char cmd;
    int in_a, in_b, in_c;
    int i, j;
    while (1) {
        printf("> ");
        fflush(stdout);
        //    in_buf[0]=0;
        // memset(in_buf,0,255);
        //scanf("%s %s",in_buf);
        fgets(in_buf, 255, stdin);
        switch (in_buf[0]) {
        case 'q':
        case 'c':
            dbg_step = 0;
            return;
            break;
        case 's':
            dbg_step = 1;
            return;
        case 'b':
            sscanf(in_buf, "%c %x", &cmd, &in_a);
            add_bp(in_a);
            break;
        case 'B':
            sscanf(in_buf, "%c %x", &cmd, &in_a);
            del_bp(in_a);
            break;
        case 'd':
            sscanf(in_buf, "%c %s", &cmd, val);
            /*
               printf("in : %s\n",in_buf);
               printf("val: %s\n",val);
             */
            in_a = strtol(val, NULL, 0);
            //      printf("ina: %x\n",in_a);
            cpu_68k_disassemble(in_a, 10);
            break;
        case 'p':
            cpu_68k_dumpreg();
            break;
        }
        printf("\n");
    }
}
示例#2
0
static void dbg_get(char* s, int size) {
    //char buf[size];
    char *args,*argsend;
    int pc;

    fgets(s, size, stdin);

    args = s + 1;
    while((*args) && ((*args) < 32)) args++;

    switch (s[0]) {
    case '?':
	printf("B [address]           Add a breakpoint at [address]\n"
	       "N [address]           Del breakpoint at [address]\n"
	       "R                     Run until breakpoint\n");
	return;
    case 'B':
	if (args) {
	    pc=strtoul(args,&argsend,0);
	    if (args != argsend)
		add_bp(pc);
	    else
		printf("Invalid input\n");
	}
	s[0]=0;
	break;
    case 'N':
	if (args) {
	    pc=strtoul(args,&argsend,0);
	    if (args != argsend)
		del_bp(pc);
	    else
		printf("Invalid input\n");
	}
	s[0]=0;
	break;
    case 'R':
	while(check_bp(cpu_68k_getpc())!=SDL_TRUE && dbg_step==0) {
	     cpu_68k_dpg_step();
	}
	if (dbg_step) dbg_step=0;
	s[0]=0;
	break;
    }
    
}