diff --git a/sourcepawn/vm/sp_vm_debug.h b/sourcepawn/vm/sp_vm_debug.h new file mode 100644 index 00000000..901f955c --- /dev/null +++ b/sourcepawn/vm/sp_vm_debug.h @@ -0,0 +1,52 @@ +#ifndef _INCLUDE_SOURCEPAWN_VM_DEBUG_H +#define _INCLUDE_SOURCEPAWN_VM_DEBUG_H + +/***************** + ** Note that all functions return a non-zero error code on failure + * unless otherwise noted. + * All input pointers must be valid unless otherwise noted as optional. + * All output pointers on failure are undefined. + * All local address are guaranteed to be positive. However, they are stored + * as signed integers, because they must logically fit inside a cell. + */ + +/** + * Given a code pointer, finds the file it is associated with. + * + * @param ctx Context pointer. + * @param addr Code address offset. + * @param filename Pointer to store filename pointer in. + */ +int SP_DbgLookupFile(sp_context_t *ctx, ucell_t addr, const char **filename); + +/** + * Given a code pointer, finds the function it is associated with. + * + * @param ctx Context pointer. + * @param addr Code address offset. + * @param name Pointer to store function name pointer in. + */ +int SP_DbgLookupFunction(sp_context_t *ctx, ucell_t addr, const char **name); + +/** + * Given a code pointer, finds the line it is associated with. + * + * @param ctx Context pointer. + * @param addr Code address offset. + * @param line Pointer to store line number in. + */ +int SP_DbgLookupLine(sp_context_t *ctx, ucell_t addr, uint32_t *line); + +/** + * Installs a debug break and returns the old one, if any. + * + * @param ctx Context pointer. + * @param newpfn New function pointer. + * @param oldpfn Pointer to retrieve old function pointer. + */ +int SP_DbgInstallBreak(sp_context_t *ctx, + SPVM_DEBUGBREAK newpfn, + SPVM_DEBUGBREAK *oldpfn); + + +#endif //_INCLUDE_SOURCEPAWN_VM_DEBUG_H