mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2024-11-30 15:41:12 +00:00
qcvm -trace now shows the current function name and nest-depth
This commit is contained in:
parent
83438d9833
commit
9a42dd1c3a
2 changed files with 19 additions and 0 deletions
17
exec.c
17
exec.c
|
@ -50,6 +50,8 @@ MEM_VEC_FUN_RESIZE(qc_program, size_t, profile)
|
||||||
|
|
||||||
MEM_VEC_FUNCTIONS(qc_program, prog_builtin, builtins)
|
MEM_VEC_FUNCTIONS(qc_program, prog_builtin, builtins)
|
||||||
|
|
||||||
|
MEM_VEC_FUNCTIONS(qc_program, const char*, function_stack)
|
||||||
|
|
||||||
static void loaderror(const char *fmt, ...)
|
static void loaderror(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
int err = errno;
|
int err = errno;
|
||||||
|
@ -417,6 +419,12 @@ static void prog_print_statement(qc_program *prog, prog_section_statement *st)
|
||||||
printf("<illegal instruction %d>\n", st->opcode);
|
printf("<illegal instruction %d>\n", st->opcode);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ((prog->xflags & VMXF_TRACE) && prog->function_stack_count) {
|
||||||
|
size_t i;
|
||||||
|
for (i = 0; i < prog->function_stack_count; ++i)
|
||||||
|
printf("->");
|
||||||
|
printf("%s:", prog->function_stack[prog->function_stack_count-1]);
|
||||||
|
}
|
||||||
printf(" <> %-12s", asm_instr[st->opcode].m);
|
printf(" <> %-12s", asm_instr[st->opcode].m);
|
||||||
if (st->opcode >= INSTR_IF &&
|
if (st->opcode >= INSTR_IF &&
|
||||||
st->opcode <= INSTR_IFNOT)
|
st->opcode <= INSTR_IFNOT)
|
||||||
|
@ -514,6 +522,10 @@ static qcint prog_enterfunction(qc_program *prog, prog_section_function *func)
|
||||||
st.stmt = prog->statement;
|
st.stmt = prog->statement;
|
||||||
st.function = func;
|
st.function = func;
|
||||||
|
|
||||||
|
if (prog->xflags & VMXF_TRACE) {
|
||||||
|
(void)!qc_program_function_stack_add(prog, prog_getstring(prog, func->name));
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef QCVM_BACKUP_STRATEGY_CALLER_VARS
|
#ifdef QCVM_BACKUP_STRATEGY_CALLER_VARS
|
||||||
if (prog->stack_count)
|
if (prog->stack_count)
|
||||||
{
|
{
|
||||||
|
@ -566,6 +578,11 @@ static qcint prog_leavefunction(qc_program *prog)
|
||||||
|
|
||||||
qc_exec_stack st = prog->stack[prog->stack_count-1];
|
qc_exec_stack st = prog->stack[prog->stack_count-1];
|
||||||
|
|
||||||
|
if (prog->xflags & VMXF_TRACE) {
|
||||||
|
if (prog->function_stack_count)
|
||||||
|
prog->function_stack_count--;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef QCVM_BACKUP_STRATEGY_CALLER_VARS
|
#ifdef QCVM_BACKUP_STRATEGY_CALLER_VARS
|
||||||
if (prog->stack_count > 1) {
|
if (prog->stack_count > 1) {
|
||||||
prev = prog->stack[prog->stack_count-2].function;
|
prev = prog->stack[prog->stack_count-2].function;
|
||||||
|
|
2
gmqcc.h
2
gmqcc.h
|
@ -876,6 +876,8 @@ typedef struct qc_program_s {
|
||||||
MEM_VECTOR_MAKE(qcint, entitydata);
|
MEM_VECTOR_MAKE(qcint, entitydata);
|
||||||
MEM_VECTOR_MAKE(bool, entitypool);
|
MEM_VECTOR_MAKE(bool, entitypool);
|
||||||
|
|
||||||
|
MEM_VECTOR_MAKE(const char*, function_stack);
|
||||||
|
|
||||||
uint16_t crc16;
|
uint16_t crc16;
|
||||||
|
|
||||||
size_t tempstring_start;
|
size_t tempstring_start;
|
||||||
|
|
Loading…
Reference in a new issue