Move printing functions to init script
This commit is contained in:
@@ -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");
|
||||
|
||||
14
.debugusrc1.js
Normal file
14
.debugusrc1.js
Normal file
@@ -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();
|
||||
60
debugus.c
60
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)
|
||||
|
||||
Reference in New Issue
Block a user