Android 发生崩溃时,如何安全地报告Lua堆栈跟踪? 如果C++中调用的LUA包含无效指针,则可能发生崩溃。但是未缠绕的堆栈跟踪只包含C++函数,如“LuaaXXXX”。如果没有Lua堆栈跟踪,很难确定发生了什么

Android 发生崩溃时,如何安全地报告Lua堆栈跟踪? 如果C++中调用的LUA包含无效指针,则可能发生崩溃。但是未缠绕的堆栈跟踪只包含C++函数,如“LuaaXXXX”。如果没有Lua堆栈跟踪,很难确定发生了什么,android,c++,ios,lua,crashlytics,Android,C++,Ios,Lua,Crashlytics,我想在客户端崩溃时向服务器报告Lua堆栈跟踪。但是有一些问题我不是很确定 如果堆或堆栈被无效的内存写入搞得一团糟,我如何安全地读取Lua堆栈跟踪而不发生二次崩溃 通常,崩溃处理程序函数在另一个进程中调用。从主线程获取luavm安全吗 我尝试的是在崩溃处理程序进程中获取Lua VM,并使用以下代码: luaL_traceback(L, L, NULL, 1); const char* s = lua_tostring(L, -1); 但在某些情况下,它会导致二次崩溃 我正在考虑的另一种方案是使用

我想在客户端崩溃时向服务器报告Lua堆栈跟踪。但是有一些问题我不是很确定

  • 如果堆或堆栈被无效的内存写入搞得一团糟,我如何安全地读取Lua堆栈跟踪而不发生二次崩溃
  • 通常,崩溃处理程序函数在另一个进程中调用。从主线程获取luavm安全吗
  • 我尝试的是在崩溃处理程序进程中获取Lua VM,并使用以下代码:

    luaL_traceback(L, L, NULL, 1);
    const char* s = lua_tostring(L, -1);
    
    但在某些情况下,它会导致二次崩溃


    我正在考虑的另一种方案是使用point+offset读取Lua堆栈的原始内存,或者在每次Lua调用时将堆栈信息转储到特定的内存部分。但两者都不理想。它们将导致额外的性能成本或潜在的崩溃风险。

    我认为Lua没有这种内置功能。我认为Lua没有这种内置功能。