debug 打印 函数调用 堆栈

一、背景

开发过程中,当程序发生错误或异常时,打印调用堆栈可以帮助开发者快速定位问题发生的代码位置。

调用堆栈显示了函数是如何被调用的,包括函数调用的顺序和参数值,这有助于理解程序的执行流程。

因此整理平时debug代码方法,相信会对大家有所帮助!内容如下:

二、Java 层查看堆栈打印

在你想查阅代码的地方加入下面两行代码即可。

for(StackTraceElement a:new Throwable().getStackTrace())
Log.d("haha","at "+a); //注意根据文件调整Log.d

三、C++ 层查看堆栈打印

步骤一:在Android.bp 或 Android.mk 中添加 libutilscallstack

//Android.bp
shared_libs: [
"libutilscallstack",
]

//Android.mk
LOCAL_SHARED_LIBRARIES:= libutilscallstack
//或
LOCAL_JNI_SHARED_LIBRARIES := libutilscallstack

图1
图2

步骤二:在你需要查看的cpp文件中添加下面代码

#include <utils/CallStack.h>
android::CallStack cs("cpp_log_tag");//在你想查阅代码的地方添加此语句

四、备注

printk 函数是内核态下的打印, 
printf 函数是用户态下的打印。

printk 的输出级别是受控于内核的日志级别设置。
echo 7 > /proc/sys/kernel/printk  //放开内核打印
echo 0 > /proc/sys/kernel/printk  //关闭内核打印
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值