void debuggerBreak(int n, char **args)
static void debuggerBreak(int n, char **args)
void debuggerBreak(int n, char **args){  if(n == 2) {    u32 address = 0;    u32 value = 0;    int type = 0;    char *s = args[1];    char c = *s;    if(strchr(s, ':')) {      char *name = s;      char *l = strchr(s, ':');      *l++ = 0;      int line = atoi(l);      u32 addr;      Function *f;      CompileUnit *u;            if(elfFindLineInModule(&addr, name, line)) {        if(elfGetCurrentFunction(addr, &f, &u)) {          u32 addr2;          if(elfGetSymbolAddress(f->name, &addr2, &value, &type)) {            address = addr;          } else {            printf("Unable to get function symbol data\n");            return;          }        } else {          printf("Unable to find function for address\n");          return;        }      } else {        printf("Unable to find module or line\n");        return;      }    } else if(c >= '0' && c <= '9') {      int line = atoi(s);      Function *f;      CompileUnit *u;      u32 addr;            if(elfGetCurrentFunction(armNextPC, &f, &u)) {        if(elfFindLineInUnit(&addr, u, line)) {          if(elfGetCurrentFunction(addr, &f, &u)) {            u32 addr2;            if(elfGetSymbolAddress(f->name, &addr2, &value, &type)) {              address = addr;            } else {              printf("Unable to get function symbol data\n");              return;            }          } else {            printf("Unable to find function for address\n");            return;          }        } else {          printf("Unable to find line\n");          return;        }      } else {        printf("Cannot find current function\n");        return;      }    } else {      if(!elfGetSymbolAddress(s, &address, &value, &type)) {        printf("Function %s not found\n", args[1]);        return;      }    }    if(type == 0x02 || type == 0x0d) {      int i = debuggerNumOfBreakpoints;      int size = 0;      if(type == 2)        size = 1;      debuggerBreakpointList[i].address = address;      debuggerBreakpointList[i].value = type == 0x02 ?        debuggerReadMemory(address) : debuggerReadHalfWord(address);      debuggerBreakpointList[i].size = size;      //      debuggerApplyBreakpoint(address, i, size);      debuggerNumOfBreakpoints++;      if(size)        printf("Added ARM breakpoint at %08x\n", address);              else        printf("Added THUMB breakpoint at %08x\n", address);    } else {      printf("%s is not a function symbol\n", args[1]);     }  } else    debuggerUsage("break");  }