From ddf2152d46a4fb8ada2f0d4891700bacb993b1d2 Mon Sep 17 00:00:00 2001 From: kamkow1 Date: Sun, 9 Mar 2025 18:46:31 +0100 Subject: [PATCH] Move printing functions to init script --- .debugusrc.js | 27 ++++++++++++++--------- .debugusrc1.js | 14 ++++++++++++ debugus.c | 60 +++++++++++++++++++++++++++----------------------- 3 files changed, 63 insertions(+), 38 deletions(-) create mode 100644 .debugusrc1.js diff --git a/.debugusrc.js b/.debugusrc.js index b9fdfb8..e6222d1 100644 --- a/.debugusrc.js +++ b/.debugusrc.js @@ -1,13 +1,20 @@ -log_inf("Loading init script for program ./test"); -log_err("Test error message"); +// Main script -var main_offset = "0x0000000000001135"; // objdump -d ./test +log_inf("Loading system init script"); -// Testing... -print_file(); -print_dbg_pid(); -print_program_load_offset(); -mk_brk_addr(main_offset); -list_brks(); -cont(); +function print_file() +{ + log_inf("Debugging file \"" + get_file() + "\""); +} +function print_pid() +{ + log_inf("Debuggee PID is " + get_pid()); +} + +function print_program_load_offset() +{ + log_inf("Program load offset is " + get_program_load_offset()); +} + +load_script(".debugusrc1.js"); diff --git a/.debugusrc1.js b/.debugusrc1.js new file mode 100644 index 0000000..3542fc8 --- /dev/null +++ b/.debugusrc1.js @@ -0,0 +1,14 @@ +// User script + +log_inf("Loading user init script for program ./test"); +log_err("Test error message"); + +var main_offset = "0x0000000000001135"; // objdump -d ./test + +// Testing... +print_file(); +print_pid(); +print_program_load_offset(); +mk_brk_addr(main_offset); +list_brks(); +cont(); diff --git a/debugus.c b/debugus.c index c9efa02..ebdd92c 100644 --- a/debugus.c +++ b/debugus.c @@ -72,22 +72,6 @@ typedef struct { #define getdbg() ((Dbg*)js_currentfunctiondata(js)) -void dbg_js_print_file(js_State *js) -{ - Dbg *dbg = getdbg(); - LOG_INF("File: %s\n", dbg->file); - - js_pushundefined(js); -} - -void dbg_js_print_dbg_pid(js_State *js) -{ - Dbg *dbg = getdbg(); - LOG_INF("Debugger PID: %d\n", dbg->pid); - - js_pushundefined(js); -} - void dbg_js_cont(js_State *js) { Dbg *dbg = getdbg(); @@ -138,12 +122,10 @@ void dbg_js_set_program_load_offset(js_State *js) js_pushundefined(js); } -void dbg_js_print_program_load_offset(js_State *js) +void dbg_js_get_program_load_offset(js_State *js) { Dbg *dbg = getdbg(); - LOG_INF("Program load offset: 0x%"PRIxPTR"\n", dbg->program_load_offset); - - js_pushundefined(js); + js_pushnumber(js, dbg->program_load_offset); } void dbg_js_list_brks(js_State *js) @@ -176,6 +158,27 @@ void dbg_js_log_err(js_State *js) js_pushundefined(js); } +void dbg_js_load_script(js_State *js) +{ + void dbg_load_script(Dbg *dbg, const char *script_path); + Dbg *dbg = getdbg(); + const char *path = js_tostring(js, 1); + dbg_load_script(dbg, path); + js_pushundefined(js); +} + +void dbg_js_get_file(js_State *js) +{ + Dbg *dbg = getdbg(); + js_pushstring(js, dbg->file); +} + +void dbg_js_get_pid(js_State *js) +{ + Dbg *dbg = getdbg(); + js_pushnumber(js, dbg->pid); +} + void dbg_init_js(Dbg *dbg) { dbg->js = js_newstate(NULL, NULL, JS_STRICT); @@ -186,16 +189,17 @@ void dbg_init_js(Dbg *dbg) js_setglobal(dbg->js, #name); \ } while(0) - make_js_func(print_file, 0); - make_js_func(print_dbg_pid, 0); make_js_func(cont, 0); make_js_func(mk_brk_addr, 1 /*addr*/); make_js_func(rm_brk_addr, 1 /*addr*/); make_js_func(list_brks, 0); - make_js_func(set_program_load_offset, 1); - make_js_func(print_program_load_offset, 0); - make_js_func(log_inf, 1); - make_js_func(log_err, 1); + make_js_func(set_program_load_offset, 1 /*offset*/); + make_js_func(log_inf, 1 /*string*/); + make_js_func(log_err, 1 /*string*/); + make_js_func(load_script, 1 /*path*/); + make_js_func(get_file, 0); + make_js_func(get_pid, 0); + make_js_func(get_program_load_offset, 0); #undef make_js_func } @@ -219,7 +223,7 @@ void dbg_init_load_offset(Dbg *dbg) pmparser_free(&maps_iter); } -void dbg_load_init_script(Dbg *dbg, const char *script_path) +void dbg_load_script(Dbg *dbg, const char *script_path) { FILE *script = fopen(script_path, "r"); if (script == NULL) { @@ -247,7 +251,7 @@ void dbg_init(Dbg *dbg, const char *file, pid_t pid) dbg_init_load_offset(dbg); hashtable_init(&dbg->brks, MAX_BRKS); - dbg_load_init_script(dbg, INIT_SCRIPT); + dbg_load_script(dbg, INIT_SCRIPT); } void dbg_deinit(Dbg *dbg)