Linux驱动调试-堆栈log

驱动基本调试技巧
**

一, 堆栈打印

**
1,C++ 中堆栈打印
CallStack stack(LOG_TAG); 打印堆栈

头文件:#include <utils/CallStack.h>
CallStack *t =new CallStack("joymine_trace",1);
delete t;

原型:CallStack::CallStack(const char* logtag, int32_t ignoreDepth)

测试实例:

打印实例二:

01-01 08:00:05.337   332  3532 D joymine_trace: #00 pc 0000a393  /system/lib/libaudiopolicyenginedefault.so (android::audio_policy::Engine::getStrategyForUsage(audio_usage_t)+30) 
01-01 08:00:05.337   332  3532 D joymine_trace: #01 pc 00017a6b  /system/lib/libaudiopolicymanagerdefault.so (android::AudioPolicyManager::getDeviceForStrategy(android::routing_strategy, bool)+68) 
01-01 08:00:05.337   332  3532 D joymine_trace: #02 pc 00014d3f  /system/lib/libaudiopolicymanagerdefault.so (android::AudioPolicyManager::checkDeviceMuteStrategies(android::sp<android::AudioOutputDescriptor>, unsigned int, unsigned int)+94) 
01-01 08:00:05.337   332  3532 D joymine_trace: #03 pc 000176dd  /system/lib/libaudiopolicymanagerdefault.so (android::AudioPolicyManager::setOutputDevice(android::sp<android::AudioOutputDescriptor> const&, unsigned int, bool, int, int*, char const*)+292) 
01-01 08:00:05.337   332  3532 D joymine_trace: #04 pc 000174e1  /system/lib/libaudiopolicymanagerdefault.so (android::AudioPolicyManager::releaseAudioPatch(int, unsigned int)+124) 
01-01 08:00:05.337   332  3532 D joymine_trace: #05 pc 00016c91  /system/lib/libaudiopolicymanagerdefault.so (android::AudioPolicyManager::clearAudioPatches(unsigned int)+68) 
01-01 08:00:05.337   332  3532 D joymine_trace: #06 pc 00018d6f  /system/lib/libaudiopolicymanagerdefault.so (android::AudioPolicyManager::releaseResourcesForUid(unsigned int)+6) 
01-01 08:00:05.337   332  3532 D joymine_trace: #07 pc 000060f1  /system/lib/libaudiopolicyservice.so 

2,HAL C
_Unwind_Backtrace()

3,Kernel C: dump_stack();

4,JAVA堆栈打印:
包:import android.util.Log;

方法:
StackTraceElement[] stackframes = Thread.currentThread().getStackTrace();
Log.e(“Stacktrace * gfx”, “*******BEGIN*****”);
For (int i=0; i < stackframes.length; i++)
{
Log.e(“Stacktrace * gfx”, stackframes[i].toString());
}
Log.e(“Stacktrace * gfx”, “********END******”);

**

二, tips

**
kernel & user space 的log交错打出来
adb shell ‘(logcat -v threadtime & cat /proc/kmsg)’ | tee userkernel.txt

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值