Implement source debugging for interpreter and AOT (#769)
Implement source debugging feature for classic interpreter and AOT: - use `cmake -DWAMR_BUILD_DEBUG_INTERP=1` to enable interpreter debugging - use `cmake -DWAMR_BUILD_DEBUG_AOT=1` to enable AOT debugging See doc/source_debugging.md for more details.
This commit is contained in:
@ -16,6 +16,9 @@
|
||||
#if WASM_ENABLE_THREAD_MGR != 0
|
||||
#include "../libraries/thread-mgr/thread_manager.h"
|
||||
#endif
|
||||
#if WASM_ENABLE_DEBUG_INTERP != 0
|
||||
#include "../libraries/debug-engine/debug_engine.h"
|
||||
#endif
|
||||
|
||||
static void
|
||||
set_error_buf(char *error_buf, uint32 error_buf_size, const char *string)
|
||||
@ -1826,14 +1829,30 @@ wasm_module_malloc(WASMModuleInstance *module_inst, uint32 size,
|
||||
}
|
||||
else if (module_inst->malloc_function
|
||||
&& module_inst->free_function) {
|
||||
#if WASM_ENABLE_DEBUG_INTERP != 0
|
||||
/* TODO: obviously, we can not create debug instance for
|
||||
* module malloc here, so, just disable the engine here,
|
||||
* it is strange, but we now are lack of ways to indicate
|
||||
* which calls should not be debugged. And we have other
|
||||
* execute_xxx_function may need to be taken care of
|
||||
*/
|
||||
bool active = wasm_debug_get_engine_active();
|
||||
wasm_debug_set_engine_active(false);
|
||||
#endif
|
||||
if (!execute_malloc_function(module_inst,
|
||||
module_inst->malloc_function,
|
||||
module_inst->retain_function,
|
||||
size, &offset)) {
|
||||
#if WASM_ENABLE_DEBUG_INTERP != 0
|
||||
wasm_debug_set_engine_active(active);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
#if WASM_ENABLE_DEBUG_INTERP != 0
|
||||
wasm_debug_set_engine_active(active);
|
||||
#endif
|
||||
/* If we use app's malloc function,
|
||||
the default memory may be changed while memory growing */
|
||||
the default memory may be changed while memory growing */
|
||||
memory = module_inst->default_memory;
|
||||
addr = offset ? memory->memory_data + offset : NULL;
|
||||
}
|
||||
@ -1915,9 +1934,19 @@ wasm_module_free(WASMModuleInstance *module_inst, uint32 ptr)
|
||||
&& module_inst->free_function
|
||||
&& memory->memory_data <= addr
|
||||
&& addr < memory->memory_data_end) {
|
||||
#if WASM_ENABLE_DEBUG_INTERP != 0
|
||||
/*TODO: obviously, we can not create debug instance for module malloc here,
|
||||
so, just disable the engine here, it is strange. the wasm's call should be
|
||||
marshed to its own thread */
|
||||
bool active = wasm_debug_get_engine_active();
|
||||
wasm_debug_set_engine_active(false);
|
||||
#endif
|
||||
execute_free_function(module_inst,
|
||||
module_inst->free_function,
|
||||
ptr);
|
||||
#if WASM_ENABLE_DEBUG_INTERP != 0
|
||||
wasm_debug_set_engine_active(active);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user