HarmonyOS 鸿蒙Next Debug下如何打印调用栈
HarmonyOS 鸿蒙Next Debug下如何打印调用栈
可使用new Error().stack获取方法的调用堆栈信息,或使用console.trace打印当前堆栈 console.trace:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-logs-V5#consoletrace10
修改根目录->hvigor->hvigor-config.json5中的日志级别logging->level为debug级别,同时修改stacktrace->true,Debug报错日志会启用打印堆栈跟踪:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-hvigor-set-options-V5
demo如下:
@Entry
@Component
struct Index {
@State message: string = 'Hello World';
testA(){
this.testB()
}
testB(){
this.testC()
}
testC(){
this.testD()
}
testD(){
console.trace('testD')
}
build() {
RelativeContainer() {
Text(this.message)
.id('HelloWorld')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
.onClick(()=>{
this.testA()
})
}
.height('100%')
.width('100%')
}
}
打印结果是:
Trace: testD
at testD (entry/src/main/ets/pages/Index.ets:16:5)
at testC (entry/src/main/ets/pages/Index.ets:13:5)
at testB (entry/src/main/ets/pages/Index.ets:10:5)
at testA (entry/src/main/ets/pages/Index.ets:7:5)
at anonymous (entry/src/main/ets/pages/Index.ets:30:11)
更多关于HarmonyOS 鸿蒙Next Debug下如何打印调用栈的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next Debug下打印调用栈,可以通过以下步骤实现:
-
使用Log工具:鸿蒙系统提供了日志打印工具,如
HILOG
。你可以使用它来打印调用栈信息。具体地,可以调用HiLog
的接口,设置合适的日志级别(如ERROR)和标签,然后将调用栈信息作为日志内容输出。 -
获取当前线程调用栈:鸿蒙系统提供了获取当前线程调用栈的API,通常这些API会返回一个字符串或字符串数组,表示从当前函数到调用它的函数链条。你可以通过调用这些API来获取调用栈信息。
-
组合使用:在调试过程中,当遇到需要打印调用栈的场景时,先获取当前线程的调用栈信息,然后使用日志工具将其输出。
-
示例代码:
#include <hilog/log.h> #include <stack_trace.h> // 假设这是鸿蒙提供的获取调用栈的头文件 void PrintCurrentStackTrace() { char* stackTrace = GetCurrentStackTrace(); // 假设这是获取调用栈的函数 HiLog::Error("TAG", "Current stack trace: %s", stackTrace); // 释放stackTrace资源,如果有必要的话 }
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html