打印C++栈时,带上buildID信息

issues:https://gitee.com/openharmony/arkcompiler_ets_runtime/issues/I8YDTP

Signed-off-by: rentangyu <rentangyu@huawei.com>
This commit is contained in:
rentangyu 2024-03-12 15:14:57 +08:00
parent 3655959dfb
commit 73140814b3
5 changed files with 27 additions and 13 deletions

View File

@ -246,10 +246,15 @@ JSHandle<EcmaString> ErrorHelper::BuildEcmaStackTrace(JSThread *thread, std::str
LOG_ECMA(DEBUG) << data;
// unconverted stack
stack = data;
auto ecmaVm = thread->GetEcmaVM();
// sourceMap callback
auto cb = thread->GetEcmaVM()->GetSourceMapCallback();
if (cb != nullptr) {
data = cb(data.c_str());
auto sourceMapcb = ecmaVm->GetSourceMapCallback();
if (sourceMapcb != nullptr && !data.empty()) {
data = sourceMapcb(data.c_str());
}
auto nativeStackcb = ecmaVm->GetNativeStackCallback();
if (nativeStackcb != nullptr && data.empty()) {
data = nativeStackcb();
}
ObjectFactory *factory = thread->GetEcmaVM()->GetFactory();

View File

@ -27,9 +27,6 @@
#if defined(PANDA_TARGET_OHOS)
#include "ecmascript/extractortool/src/extractor.h"
#endif
#if defined(ENABLE_EXCEPTION_BACKTRACE)
#include "ecmascript/platform/backtrace.h"
#endif
namespace panda::ecmascript {
std::string JsStackInfo::BuildMethodTrace(Method *method, uint32_t pcOffset, bool enableStackSourceFile)
@ -129,13 +126,6 @@ std::string JsStackInfo::BuildJsStackTrace(JSThread *thread, bool needNative)
data.append(" at native method (").append(strm.str()).append(")\n");
}
}
if (data.empty()) {
#if defined(ENABLE_EXCEPTION_BACKTRACE)
std::ostringstream stack;
Backtrace(stack, false, true);
data = stack.str();
#endif
}
return data;
}

View File

@ -92,6 +92,7 @@ class Jit;
using NativePtrGetter = void* (*)(void* info);
using SourceMapCallback = std::function<std::string(const std::string& rawStack)>;
using SourceMapTranslateCallback = std::function<bool(std::string& url, int& line, int& column)>;
using NativeStackCallback = std::function<std::string()>;
using ResolveBufferCallback = std::function<bool(std::string dirPath, uint8_t **buff, size_t *buffSize)>;
using UnloadNativeModuleCallback = std::function<bool(const std::string &moduleKey)>;
using RequestAotCallback =
@ -298,6 +299,16 @@ public:
return sourceMapTranslateCallback_;
}
void SetNativeStackCallback(NativeStackCallback cb)
{
nativeStackCallback_ = cb;
}
NativeStackCallback GetNativeStackCallback() const
{
return nativeStackCallback_;
}
size_t GetNativePointerListSize()
{
return nativePointerList_.size();
@ -639,6 +650,7 @@ private:
NativePtrGetter nativePtrGetter_ {nullptr};
SourceMapCallback sourceMapCallback_ {nullptr};
SourceMapTranslateCallback sourceMapTranslateCallback_ {nullptr};
NativeStackCallback nativeStackCallback_ {nullptr};
void *loop_ {nullptr};
// resolve path to get abc's buffer

View File

@ -96,6 +96,7 @@ using JSTaggedType = uint64_t;
using ConcurrentCallback = void (*)(Local<JSValueRef> result, bool success, void *taskInfo, void *data);
using SourceMapCallback = std::function<std::string(const std::string& rawStack)>;
using SourceMapTranslateCallback = std::function<bool(std::string& url, int& line, int& column)>;
using NativeStackCallback = std::function<std::string()>;
using DeviceDisconnectCallback = std::function<bool()>;
#define ECMA_DISALLOW_COPY(className) \
@ -1262,6 +1263,7 @@ public:
static void SetNativePtrGetter(EcmaVM *vm, void* cb);
static void SetSourceMapCallback(EcmaVM *vm, SourceMapCallback cb);
static void SetSourceMapTranslateCallback(EcmaVM *vm, SourceMapTranslateCallback cb);
static void SetNativeStackCallback(EcmaVM *vm, NativeStackCallback cb);
static void SetHostEnqueueJob(const EcmaVM* vm, Local<JSValueRef> cb);
static void InitializeIcuData(const ecmascript::JSRuntimeOptions &options);
static void InitializeMemMapAllocator();

View File

@ -2724,6 +2724,11 @@ void JSNApi::SetSourceMapTranslateCallback(EcmaVM *vm, SourceMapTranslateCallbac
vm->SetSourceMapTranslateCallback(callback);
}
void JSNApi::SetNativeStackCallback(EcmaVM *vm, NativeStackCallback callback)
{
vm->SetNativeStackCallback(callback);
}
void JSNApi::SetSourceMapCallback(EcmaVM *vm, SourceMapCallback callback)
{
vm->SetSourceMapCallback(callback);