DBG: small code improvements
This commit is contained in:
parent
f504f0150a
commit
93e5e0489e
|
@ -669,51 +669,51 @@ BRIDGE_IMPEXP void GuiSymbolUpdateModuleList(int count, SYMBOLMODULEINFO* module
|
|||
|
||||
BRIDGE_IMPEXP void GuiReferenceAddColumn(int width, const char* title)
|
||||
{
|
||||
_gui_sendmessage(GUI_REF_ADDCOLUMN, (void*)(duint)width, (void*)title);
|
||||
_gui_sendmessage(GUI_REF_ADDCOLUMN, (void*)(duint)width, (void*)title);
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP void GuiReferenceSetRowCount(int count)
|
||||
{
|
||||
_gui_sendmessage(GUI_REF_SETROWCOUNT, (void*)(duint)count, 0);
|
||||
_gui_sendmessage(GUI_REF_SETROWCOUNT, (void*)(duint)count, 0);
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP int GuiReferenceGetRowCount()
|
||||
{
|
||||
return (int)(duint)_gui_sendmessage(GUI_REF_GETROWCOUNT, 0, 0);
|
||||
return (int)(duint)_gui_sendmessage(GUI_REF_GETROWCOUNT, 0, 0);
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP void GuiReferenceDeleteAllColumns()
|
||||
{
|
||||
_gui_sendmessage(GUI_REF_DELETEALLCOLUMNS, 0, 0);
|
||||
_gui_sendmessage(GUI_REF_DELETEALLCOLUMNS, 0, 0);
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP void GuiReferenceSetCellContent(int row, int col, const char* str)
|
||||
{
|
||||
CELLINFO info;
|
||||
info.row=row;
|
||||
info.col=col;
|
||||
info.str=str;
|
||||
_gui_sendmessage(GUI_REF_SETCELLCONTENT, &info, 0);
|
||||
CELLINFO info;
|
||||
info.row=row;
|
||||
info.col=col;
|
||||
info.str=str;
|
||||
_gui_sendmessage(GUI_REF_SETCELLCONTENT, &info, 0);
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP const char* GuiReferenceGetCellContent(int row, int col)
|
||||
{
|
||||
return (const char*)_gui_sendmessage(GUI_REF_GETCELLCONTENT, (void*)(duint)row, (void*)(duint)col);
|
||||
return (const char*)_gui_sendmessage(GUI_REF_GETCELLCONTENT, (void*)(duint)row, (void*)(duint)col);
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP void GuiReferenceReloadData()
|
||||
{
|
||||
_gui_sendmessage(GUI_REF_RELOADDATA, 0, 0);
|
||||
_gui_sendmessage(GUI_REF_RELOADDATA, 0, 0);
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP void GuiReferenceSetSingleSelection(int index, bool scroll)
|
||||
{
|
||||
_gui_sendmessage(GUI_REF_SETSINGLESELECTION, (void*)(duint)index, (void*)(duint)scroll);
|
||||
_gui_sendmessage(GUI_REF_SETSINGLESELECTION, (void*)(duint)index, (void*)(duint)scroll);
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP void GuiReferenceSetProgress(int progress)
|
||||
{
|
||||
_gui_sendmessage(GUI_REF_SETPROGRESS, (void*)(duint)progress, 0);
|
||||
_gui_sendmessage(GUI_REF_SETPROGRESS, (void*)(duint)progress, 0);
|
||||
}
|
||||
|
||||
//Main
|
||||
|
|
|
@ -330,7 +330,7 @@ enum GUIMSG
|
|||
GUI_REF_GETCELLCONTENT, // param1=int row, param2=int col
|
||||
GUI_REF_RELOADDATA, // param1=unused, param2=unused
|
||||
GUI_REF_SETSINGLESELECTION, // param1=int index, param2=bool scroll
|
||||
GUI_REF_SETPROGRESS // param1=int progress, param2=unused
|
||||
GUI_REF_SETPROGRESS // param1=int progress, param2=unused
|
||||
};
|
||||
|
||||
//GUI structures
|
||||
|
|
|
@ -1285,6 +1285,7 @@ CMDRESULT cbDebugSetHardwareBreakpoint(int argc, char* argv[])
|
|||
uint size=UE_HARDWARE_SIZE_1;
|
||||
if(argget(*argv, arg3, 2, true))
|
||||
{
|
||||
|
||||
if(!valfromstring(arg3, &size))
|
||||
return STATUS_ERROR;
|
||||
switch(size)
|
||||
|
@ -1432,15 +1433,16 @@ CMDRESULT cbDebugFree(int argc, char* argv[])
|
|||
|
||||
CMDRESULT cbDebugMemset(int argc, char* argv[])
|
||||
{
|
||||
char arg1[deflen]=""; //addr
|
||||
char arg2[deflen]=""; //value
|
||||
char arg3[deflen]=""; //size
|
||||
uint addr;
|
||||
uint value;
|
||||
uint size;
|
||||
if(!argget(*argv, arg1, 0, false) or !argget(*argv, arg2, 1, false))
|
||||
if(argc<3)
|
||||
{
|
||||
dputs("not enough arguments");
|
||||
return STATUS_ERROR;
|
||||
if(!valfromstring(arg1, &addr, false) or !valfromstring(arg2, &value, false))
|
||||
}
|
||||
if(!valfromstring(argv[1], &addr, false) or !valfromstring(argv[2], &value, false))
|
||||
return STATUS_ERROR;
|
||||
if(argget(*argv, arg3, 2, true))
|
||||
{
|
||||
|
@ -1469,11 +1471,13 @@ CMDRESULT cbDebugMemset(int argc, char* argv[])
|
|||
|
||||
CMDRESULT cbBenchmark(int argc, char* argv[])
|
||||
{
|
||||
char arg1[deflen]="";
|
||||
if(!argget(*argv, arg1, 0, false))
|
||||
if(argc<2)
|
||||
{
|
||||
dputs("not enough arguments");
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
uint addr=0;
|
||||
if(!valfromstring(arg1, &addr, false))
|
||||
if(!valfromstring(argv[1], &addr, false))
|
||||
return STATUS_ERROR;
|
||||
uint ticks=GetTickCount();
|
||||
for(int i=0; i<10000; i++)
|
||||
|
@ -1499,11 +1503,13 @@ CMDRESULT cbDebugPause(int argc, char* argv[])
|
|||
|
||||
CMDRESULT cbMemWrite(int argc, char* argv[])
|
||||
{
|
||||
char arg1[deflen]="";
|
||||
if(!argget(*argv, arg1, 0, false))
|
||||
if(argc<2)
|
||||
{
|
||||
dputs("not enough arguments");
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
uint addr=0;
|
||||
if(!valfromstring(arg1, &addr, false))
|
||||
if(!valfromstring(argv[1], &addr, false))
|
||||
return STATUS_ERROR;
|
||||
unsigned char* blub=(unsigned char*)emalloc(0x2123, "cbMemWrite:blub");
|
||||
memread(fdProcessInfo->hProcess, (const void*)addr, blub, 0x2123, 0);
|
||||
|
|
|
@ -71,7 +71,7 @@ static bool HandleArgument(ARGTYPE* Argument, INSTRTYPE* Instruction, DISASM_ARG
|
|||
arg->constant=value;
|
||||
arg->value=0;
|
||||
if(!valfromstring(argmnemonic, &value, true, true))
|
||||
return false;
|
||||
return false;
|
||||
if(DbgMemIsValidReadPtr(value))
|
||||
{
|
||||
arg->value=value;
|
||||
|
@ -98,7 +98,7 @@ static bool HandleArgument(ARGTYPE* Argument, INSTRTYPE* Instruction, DISASM_ARG
|
|||
arg->type=arg_normal;
|
||||
uint value=0;
|
||||
if(!valfromstring(argmnemonic, &value, true, true))
|
||||
return false;
|
||||
return false;
|
||||
arg->value=value;
|
||||
char sValue[64]="";
|
||||
sprintf(sValue, "%"fext"X", value);
|
||||
|
@ -111,12 +111,12 @@ static bool HandleArgument(ARGTYPE* Argument, INSTRTYPE* Instruction, DISASM_ARG
|
|||
|
||||
void disasmget(unsigned char* buffer, uint addr, DISASM_INSTR* instr)
|
||||
{
|
||||
if(!DbgIsDebugging() or !instr)
|
||||
if(!DbgIsDebugging() or !instr)
|
||||
return;
|
||||
memset(instr, 0, sizeof(DISASM_INSTR));
|
||||
memset(instr, 0, sizeof(DISASM_INSTR));
|
||||
DISASM disasm;
|
||||
memset(&disasm, 0, sizeof(DISASM));
|
||||
disasm.Options=NoformatNumeral;
|
||||
disasm.Options=NoformatNumeral;
|
||||
#ifdef _WIN64
|
||||
disasm.Archi=64;
|
||||
#endif // _WIN64
|
||||
|
@ -126,12 +126,12 @@ void disasmget(unsigned char* buffer, uint addr, DISASM_INSTR* instr)
|
|||
strcpy(instr->instruction, disasm.CompleteInstr);
|
||||
if(len==UNKNOWN_OPCODE)
|
||||
{
|
||||
instr->instr_size=1;
|
||||
instr->instr_size=1;
|
||||
instr->type=instr_normal;
|
||||
instr->argcount=0;
|
||||
return;
|
||||
}
|
||||
instr->instr_size=len;
|
||||
instr->instr_size=len;
|
||||
if(disasm.Instruction.BranchType)
|
||||
instr->type=instr_branch;
|
||||
else if(strstr(disasm.CompleteInstr, "sp") or strstr(disasm.CompleteInstr, "bp"))
|
||||
|
@ -152,7 +152,7 @@ void disasmget(uint addr, DISASM_INSTR* instr)
|
|||
return;
|
||||
unsigned char buffer[16]="";
|
||||
DbgMemRead(addr, buffer, 16);
|
||||
disasmget(buffer, addr, instr);
|
||||
disasmget(buffer, addr, instr);
|
||||
}
|
||||
|
||||
void disasmprint(uint addr)
|
||||
|
|
|
@ -41,7 +41,7 @@ struct DISASM_INSTR
|
|||
char instruction[64];
|
||||
DISASM_INSTRTYPE type;
|
||||
int argcount;
|
||||
int instr_size;
|
||||
int instr_size;
|
||||
DISASM_ARG arg[3];
|
||||
};
|
||||
|
||||
|
|
|
@ -70,18 +70,20 @@ CMDRESULT cbBadCmd(int argc, char* argv[])
|
|||
|
||||
CMDRESULT cbInstrVar(int argc, char* argv[])
|
||||
{
|
||||
char arg1[deflen]="";
|
||||
char arg2[deflen]="";
|
||||
if(!argget(*argv, arg1, 0, false)) //var name
|
||||
if(argc<2)
|
||||
{
|
||||
dputs("not enough arguments!");
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
char arg2[deflen]="";
|
||||
argget(*argv, arg2, 1, true); //var value (optional)
|
||||
uint value=0;
|
||||
int add=0;
|
||||
if(*arg1=='$')
|
||||
if(*argv[1]=='$')
|
||||
add++;
|
||||
if(valfromstring(arg1+add, &value))
|
||||
if(valfromstring(argv[1]+add, &value))
|
||||
{
|
||||
dprintf("invalid variable name \"%s\"\n", arg1);
|
||||
dprintf("invalid variable name \"%s\"\n", argv[1]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!valfromstring(arg2, &value))
|
||||
|
@ -89,57 +91,60 @@ CMDRESULT cbInstrVar(int argc, char* argv[])
|
|||
dprintf("invalid value \"%s\"\n", arg2);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
if(!varnew(arg1, value, VAR_USER))
|
||||
if(!varnew(argv[1], value, VAR_USER))
|
||||
{
|
||||
dprintf("error creating variable \"%s\"\n", arg1);
|
||||
dprintf("error creating variable \"%s\"\n", argv[1]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(value>15)
|
||||
dprintf("%s=%"fext"X (%"fext"ud)\n", arg1, value, value);
|
||||
dprintf("%s=%"fext"X (%"fext"ud)\n", argv[1], value, value);
|
||||
else
|
||||
dprintf("%s=%"fext"X\n", arg1, value);
|
||||
dprintf("%s=%"fext"X\n", argv[1], value);
|
||||
}
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
||||
CMDRESULT cbInstrVarDel(int argc, char* argv[])
|
||||
{
|
||||
char arg1[deflen]="";
|
||||
if(!argget(*argv, arg1, 0, false)) //var name
|
||||
if(argc<2)
|
||||
{
|
||||
dputs("not enough arguments!");
|
||||
return STATUS_ERROR;
|
||||
if(!vardel(arg1, false))
|
||||
dprintf("could not delete variable \"%s\"\n", arg1);
|
||||
}
|
||||
if(!vardel(argv[1], false))
|
||||
dprintf("could not delete variable \"%s\"\n", argv[1]);
|
||||
else
|
||||
dprintf("deleted variable \"%s\"\n", arg1);
|
||||
dprintf("deleted variable \"%s\"\n", argv[1]);
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
||||
CMDRESULT cbInstrMov(int argc, char* argv[])
|
||||
{
|
||||
char arg1[deflen]="";
|
||||
char arg2[deflen]="";
|
||||
if(!argget(*argv, arg1, 0, false)) //dest name
|
||||
return STATUS_ERROR;
|
||||
if(!argget(*argv, arg2, 1, false)) //src name
|
||||
return STATUS_ERROR;
|
||||
uint set_value=0;
|
||||
if(!valfromstring(arg2, &set_value))
|
||||
if(argc<3)
|
||||
{
|
||||
dprintf("invalid src \"%s\"\n", arg2);
|
||||
dputs("not enough arguments");
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
uint set_value=0;
|
||||
if(!valfromstring(argv[2], &set_value))
|
||||
{
|
||||
dprintf("invalid src \"%s\"\n", argv[2]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
bool isvar=false;
|
||||
if(!isvar or !valtostring(arg1, &set_value, true))
|
||||
uint temp=0;
|
||||
valfromstring(argv[1], &temp, true, false, 0, &isvar, 0);
|
||||
if(!isvar or !valtostring(argv[1], &set_value, true))
|
||||
{
|
||||
uint value;
|
||||
if(valfromstring(arg1, &value))
|
||||
if(!valfromstring(argv[1], &value))
|
||||
{
|
||||
dprintf("invalid dest \"%s\"\n", arg1);
|
||||
dprintf("invalid dest \"%s\"\n", argv[1]);
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
varnew(arg1, set_value, VAR_USER);
|
||||
varnew(argv[1], set_value, VAR_USER);
|
||||
}
|
||||
cbBadCmd(1, &argv[1]);
|
||||
return STATUS_CONTINUE;
|
||||
|
@ -202,34 +207,32 @@ CMDRESULT cbInstrVarList(int argc, char* argv[])
|
|||
|
||||
CMDRESULT cbInstrChd(int argc, char* argv[])
|
||||
{
|
||||
char arg1[deflen]="";
|
||||
if(!argget(*argv, arg1, 0, false))
|
||||
if(argc<2)
|
||||
{
|
||||
dputs("not enough arguments!");
|
||||
return STATUS_ERROR;
|
||||
if(!DirExists(arg1))
|
||||
}
|
||||
if(!DirExists(argv[1]))
|
||||
{
|
||||
dputs("directory doesn't exist");
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
SetCurrentDirectoryA(arg1);
|
||||
SetCurrentDirectoryA(argv[1]);
|
||||
dputs("current directory changed!");
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
||||
CMDRESULT cbInstrCmt(int argc, char* argv[])
|
||||
{
|
||||
char arg1[deflen]="";
|
||||
if(!argget(*argv, arg1, 0, false))
|
||||
return STATUS_ERROR;
|
||||
uint addr=0;
|
||||
if(!valfromstring(arg1, &addr))
|
||||
if(argc<3)
|
||||
{
|
||||
dprintf("invalid address: \"%s\"\n", arg1);
|
||||
dputs("not enough arguments!");
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
char arg2[deflen]="";
|
||||
if(!argget(*argv, arg2, 1, false))
|
||||
uint addr=0;
|
||||
if(!valfromstring(argv[1], &addr, false))
|
||||
return STATUS_ERROR;
|
||||
if(!commentset(addr, arg2))
|
||||
if(!commentset(addr, argv[2]))
|
||||
{
|
||||
dputs("error setting comment");
|
||||
return STATUS_ERROR;
|
||||
|
@ -239,15 +242,14 @@ CMDRESULT cbInstrCmt(int argc, char* argv[])
|
|||
|
||||
CMDRESULT cbInstrCmtdel(int argc, char* argv[])
|
||||
{
|
||||
char arg1[deflen]="";
|
||||
if(!argget(*argv, arg1, 0, false))
|
||||
return STATUS_ERROR;
|
||||
uint addr=0;
|
||||
if(!valfromstring(arg1, &addr))
|
||||
if(argc<2)
|
||||
{
|
||||
dprintf("invalid address: \"%s\"\n", arg1);
|
||||
dputs("not enough arguments!");
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
uint addr=0;
|
||||
if(!valfromstring(argv[1], &addr, false))
|
||||
return STATUS_ERROR;
|
||||
if(!commentdel(addr))
|
||||
{
|
||||
dputs("error deleting comment");
|
||||
|
@ -258,19 +260,15 @@ CMDRESULT cbInstrCmtdel(int argc, char* argv[])
|
|||
|
||||
CMDRESULT cbInstrLbl(int argc, char* argv[])
|
||||
{
|
||||
char arg1[deflen]="";
|
||||
if(!argget(*argv, arg1, 0, false))
|
||||
return STATUS_ERROR;
|
||||
uint addr=0;
|
||||
if(!valfromstring(arg1, &addr))
|
||||
if(argc<3)
|
||||
{
|
||||
dprintf("invalid address: \"%s\"\n", arg1);
|
||||
dputs("not enough arguments!");
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
char arg2[deflen]="";
|
||||
if(!argget(*argv, arg2, 1, false))
|
||||
uint addr=0;
|
||||
if(!valfromstring(argv[1], &addr, false))
|
||||
return STATUS_ERROR;
|
||||
if(!labelset(addr, arg2))
|
||||
if(!labelset(addr, argv[2]))
|
||||
{
|
||||
dputs("error setting label");
|
||||
return STATUS_ERROR;
|
||||
|
@ -280,16 +278,14 @@ CMDRESULT cbInstrLbl(int argc, char* argv[])
|
|||
|
||||
CMDRESULT cbInstrLbldel(int argc, char* argv[])
|
||||
{
|
||||
char arg1[deflen]="";
|
||||
if(!argget(*argv, arg1, 0, false))
|
||||
return STATUS_ERROR;
|
||||
uint addr=0;
|
||||
if(!valfromstring(arg1, &addr))
|
||||
if(argc<2)
|
||||
{
|
||||
dprintf("invalid address: \"%s\"\n", arg1);
|
||||
dputs("not enough arguments!");
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
|
||||
uint addr=0;
|
||||
if(!valfromstring(argv[1], &addr, false))
|
||||
return STATUS_ERROR;
|
||||
if(!labeldel(addr))
|
||||
{
|
||||
dputs("error deleting label");
|
||||
|
@ -300,15 +296,14 @@ CMDRESULT cbInstrLbldel(int argc, char* argv[])
|
|||
|
||||
CMDRESULT cbInstrBookmarkSet(int argc, char* argv[])
|
||||
{
|
||||
char arg1[deflen]="";
|
||||
if(!argget(*argv, arg1, 0, false))
|
||||
return STATUS_ERROR;
|
||||
uint addr=0;
|
||||
if(!valfromstring(arg1, &addr))
|
||||
if(argc<2)
|
||||
{
|
||||
dprintf("invalid address: \"%s\"\n", arg1);
|
||||
dputs("not enough arguments!");
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
uint addr=0;
|
||||
if(!valfromstring(argv[1], &addr, false))
|
||||
return STATUS_ERROR;
|
||||
if(!bookmarkset(addr))
|
||||
{
|
||||
dputs("failed to set bookmark!");
|
||||
|
@ -320,15 +315,14 @@ CMDRESULT cbInstrBookmarkSet(int argc, char* argv[])
|
|||
|
||||
CMDRESULT cbInstrBookmarkDel(int argc, char* argv[])
|
||||
{
|
||||
char arg1[deflen]="";
|
||||
if(!argget(*argv, arg1, 0, false))
|
||||
return STATUS_ERROR;
|
||||
uint addr=0;
|
||||
if(!valfromstring(arg1, &addr))
|
||||
if(argc<2)
|
||||
{
|
||||
dprintf("invalid address: \"%s\"\n", arg1);
|
||||
dputs("not enough arguments!");
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
uint addr=0;
|
||||
if(!valfromstring(argv[1], &addr, false))
|
||||
return STATUS_ERROR;
|
||||
if(!bookmarkdel(addr))
|
||||
{
|
||||
dputs("failed to delete bookmark!");
|
||||
|
@ -706,33 +700,33 @@ CMDRESULT cbInstrXor(int argc, char* argv[])
|
|||
|
||||
CMDRESULT cbInstrRefinit(int argc, char* argv[])
|
||||
{
|
||||
GuiReferenceDeleteAllColumns();
|
||||
GuiReferenceAddColumn(sizeof(uint)*2, "Address");
|
||||
GuiReferenceAddColumn(0, "Data");
|
||||
GuiReferenceSetRowCount(0);
|
||||
GuiReferenceReloadData();
|
||||
bRefinit=true;
|
||||
return STATUS_CONTINUE;
|
||||
GuiReferenceDeleteAllColumns();
|
||||
GuiReferenceAddColumn(sizeof(uint)*2, "Address");
|
||||
GuiReferenceAddColumn(0, "Data");
|
||||
GuiReferenceSetRowCount(0);
|
||||
GuiReferenceReloadData();
|
||||
bRefinit=true;
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
||||
CMDRESULT cbInstrRefadd(int argc, char* argv[])
|
||||
{
|
||||
if(argc<3)
|
||||
{
|
||||
dputs("not enough arguments!");
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
uint addr=0;
|
||||
if(!valfromstring(argv[1], &addr, false))
|
||||
return STATUS_ERROR;
|
||||
if(!bRefinit)
|
||||
cbInstrRefinit(argc, argv);
|
||||
int index=GuiReferenceGetRowCount();
|
||||
GuiReferenceSetRowCount(index+1);
|
||||
char addr_text[deflen]="";
|
||||
sprintf(addr_text, fhex, addr);
|
||||
GuiReferenceSetCellContent(index, 0, addr_text);
|
||||
GuiReferenceSetCellContent(index, 1, argv[2]);
|
||||
GuiReferenceReloadData();
|
||||
return STATUS_CONTINUE;
|
||||
if(argc<3)
|
||||
{
|
||||
dputs("not enough arguments!");
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
uint addr=0;
|
||||
if(!valfromstring(argv[1], &addr, false))
|
||||
return STATUS_ERROR;
|
||||
if(!bRefinit)
|
||||
cbInstrRefinit(argc, argv);
|
||||
int index=GuiReferenceGetRowCount();
|
||||
GuiReferenceSetRowCount(index+1);
|
||||
char addr_text[deflen]="";
|
||||
sprintf(addr_text, fhex, addr);
|
||||
GuiReferenceSetCellContent(index, 0, addr_text);
|
||||
GuiReferenceSetCellContent(index, 1, argv[2]);
|
||||
GuiReferenceReloadData();
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
|
|
@ -20,9 +20,12 @@ static COMMAND* command_list=0;
|
|||
|
||||
static CMDRESULT cbStrLen(int argc, char* argv[])
|
||||
{
|
||||
char arg1[deflen]="";
|
||||
if(argget(*argv, arg1, 0, false))
|
||||
dprintf("\"%s\"[%d]\n", arg1, strlen(arg1));
|
||||
if(argc<2)
|
||||
{
|
||||
dputs("not enough arguments!");
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
dprintf("\"%s\"[%d]\n", argv[1], strlen(argv[1]));
|
||||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
||||
|
@ -140,8 +143,8 @@ static void registercommands()
|
|||
cmdnew(cmd, "dump", cbDebugDump, true); //dump at address
|
||||
cmdnew(cmd, "printf", cbPrintf, false); //printf
|
||||
|
||||
cmdnew(cmd, "refinit", cbInstrRefinit, false);
|
||||
cmdnew(cmd, "refadd", cbInstrRefadd, false);
|
||||
cmdnew(cmd, "refinit", cbInstrRefinit, false);
|
||||
cmdnew(cmd, "refadd", cbInstrRefadd, false);
|
||||
}
|
||||
|
||||
static bool cbCommandProvider(char* cmd, int maxlen)
|
||||
|
|
Loading…
Reference in New Issue