smali打印callstack
反编译akp后在需要打印callstatck的方法中添加如下smali代码,再回编运行打印callstack。
如下实现创建一个Exception 对象,然后调用对象的printStackTrace(),
注意新增了两个寄存器,方法中的.local 数需要加2
new-instance v2, Ljava/lang/Exception;
const-string v3, "ExoPlayerImplInternal stop()"
invoke-direct {v2,v3}, Ljava/lang/Exception;-><init>(Ljava/lang/String;)V
invoke-virtual {v3}, Ljava/lang/Exception;->printStackTrace()V
Java打印callstack
new Exception(“test printk stack”).printStackTrace();
JNI c++ 打印callstack
https://blog.csdn.net/XXOOYC/article/details/51001345
Android c++ 打印callstatck
c++ 打印callstack方法:在需要打印的方法中添加如下代码片段,注意要导入头文件execinfo.h
#include "execinfo.h"
size_t i, size;
void *array[512];
size = backtrace(array, 512);
char **strings = backtrace_symbols(array, size);
for (i = 0; i < size; i++)
LOGD("%d# %s\n",i, strings[i]);
free(strings);