Преглед изворни кода

Support dump call stack on exception and dump call stack on nuttx (#2042)

Huang Qi пре 2 година
родитељ
комит
ea50bd2aca
2 измењених фајлова са 17 додато и 2 уклоњено
  1. 11 2
      core/iwasm/common/wasm_application.c
  2. 6 0
      product-mini/platforms/nuttx/wamr.mk

+ 11 - 2
core/iwasm/common/wasm_application.c

@@ -195,6 +195,7 @@ execute_main(WASMModuleInstanceCommon *module_inst, int32 argc, char *argv[])
 
     if (argv_buf_offset)
         wasm_runtime_module_free(module_inst, argv_buf_offset);
+
     return ret;
 }
 
@@ -203,7 +204,7 @@ wasm_application_execute_main(WASMModuleInstanceCommon *module_inst, int32 argc,
                               char *argv[])
 {
     bool ret;
-#if WASM_ENABLE_MEMORY_PROFILING != 0
+#if (WASM_ENABLE_MEMORY_PROFILING != 0) || (WASM_ENABLE_DUMP_CALL_STACK != 0)
     WASMExecEnv *exec_env;
 #endif
 
@@ -220,7 +221,15 @@ wasm_application_execute_main(WASMModuleInstanceCommon *module_inst, int32 argc,
     wasm_runtime_dump_perf_profiling(module_inst);
 #endif
 
-    return (ret && !wasm_runtime_get_exception(module_inst)) ? true : false;
+    if (ret)
+        ret = wasm_runtime_get_exception(module_inst) == NULL;
+
+#if WASM_ENABLE_DUMP_CALL_STACK != 0
+    if (!ret)
+        wasm_runtime_dump_call_stack(exec_env);
+#endif
+
+    return ret;
 }
 
 /**

+ 6 - 0
product-mini/platforms/nuttx/wamr.mk

@@ -216,6 +216,12 @@ else
 CFLAGS += -DWASM_ENABLE_MEMORY_TRACING=0
 endif
 
+ifeq ($(CONFIG_INTERPRETERS_WAMR_DUMP_CALL_STACK),y)
+CFLAGS += -DWASM_ENABLE_DUMP_CALL_STACK=1
+else
+CFLAGS += -DWASM_ENABLE_DUMP_CALL_STACK=0
+endif
+
 ifeq ($(CONFIG_INTERPRETERS_WAMR_LIBC_BUILTIN),y)
 CFLAGS += -DWASM_ENABLE_LIBC_BUILTIN=1
 CSRCS += libc_builtin_wrapper.c