Move printing functions to init script
This commit is contained in:
@@ -1,13 +1,20 @@
|
|||||||
log_inf("Loading init script for program ./test");
|
// Main script
|
||||||
log_err("Test error message");
|
|
||||||
|
|
||||||
var main_offset = "0x0000000000001135"; // objdump -d ./test
|
log_inf("Loading system init script");
|
||||||
|
|
||||||
// Testing...
|
function print_file()
|
||||||
print_file();
|
{
|
||||||
print_dbg_pid();
|
log_inf("Debugging file \"" + get_file() + "\"");
|
||||||
print_program_load_offset();
|
}
|
||||||
mk_brk_addr(main_offset);
|
|
||||||
list_brks();
|
|
||||||
cont();
|
|
||||||
|
|
||||||
|
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))
|
#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)
|
void dbg_js_cont(js_State *js)
|
||||||
{
|
{
|
||||||
Dbg *dbg = getdbg();
|
Dbg *dbg = getdbg();
|
||||||
@@ -138,12 +122,10 @@ void dbg_js_set_program_load_offset(js_State *js)
|
|||||||
js_pushundefined(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();
|
Dbg *dbg = getdbg();
|
||||||
LOG_INF("Program load offset: 0x%"PRIxPTR"\n", dbg->program_load_offset);
|
js_pushnumber(js, dbg->program_load_offset);
|
||||||
|
|
||||||
js_pushundefined(js);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void dbg_js_list_brks(js_State *js)
|
void dbg_js_list_brks(js_State *js)
|
||||||
@@ -176,6 +158,27 @@ void dbg_js_log_err(js_State *js)
|
|||||||
js_pushundefined(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)
|
void dbg_init_js(Dbg *dbg)
|
||||||
{
|
{
|
||||||
dbg->js = js_newstate(NULL, NULL, JS_STRICT);
|
dbg->js = js_newstate(NULL, NULL, JS_STRICT);
|
||||||
@@ -186,16 +189,17 @@ void dbg_init_js(Dbg *dbg)
|
|||||||
js_setglobal(dbg->js, #name); \
|
js_setglobal(dbg->js, #name); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
make_js_func(print_file, 0);
|
|
||||||
make_js_func(print_dbg_pid, 0);
|
|
||||||
make_js_func(cont, 0);
|
make_js_func(cont, 0);
|
||||||
make_js_func(mk_brk_addr, 1 /*addr*/);
|
make_js_func(mk_brk_addr, 1 /*addr*/);
|
||||||
make_js_func(rm_brk_addr, 1 /*addr*/);
|
make_js_func(rm_brk_addr, 1 /*addr*/);
|
||||||
make_js_func(list_brks, 0);
|
make_js_func(list_brks, 0);
|
||||||
make_js_func(set_program_load_offset, 1);
|
make_js_func(set_program_load_offset, 1 /*offset*/);
|
||||||
make_js_func(print_program_load_offset, 0);
|
make_js_func(log_inf, 1 /*string*/);
|
||||||
make_js_func(log_inf, 1);
|
make_js_func(log_err, 1 /*string*/);
|
||||||
make_js_func(log_err, 1);
|
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
|
#undef make_js_func
|
||||||
}
|
}
|
||||||
@@ -219,7 +223,7 @@ void dbg_init_load_offset(Dbg *dbg)
|
|||||||
pmparser_free(&maps_iter);
|
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");
|
FILE *script = fopen(script_path, "r");
|
||||||
if (script == NULL) {
|
if (script == NULL) {
|
||||||
@@ -247,7 +251,7 @@ void dbg_init(Dbg *dbg, const char *file, pid_t pid)
|
|||||||
dbg_init_load_offset(dbg);
|
dbg_init_load_offset(dbg);
|
||||||
hashtable_init(&dbg->brks, MAX_BRKS);
|
hashtable_init(&dbg->brks, MAX_BRKS);
|
||||||
|
|
||||||
dbg_load_init_script(dbg, INIT_SCRIPT);
|
dbg_load_script(dbg, INIT_SCRIPT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dbg_deinit(Dbg *dbg)
|
void dbg_deinit(Dbg *dbg)
|
||||||
|
|||||||
Reference in New Issue
Block a user