java打印堆栈
方法一:异常对象打印堆栈
Exception e = new Exception("this is a log");
e.printStackTrace();
方法二:Log打印获取异常的堆栈并打印
Log.e(“dump_test”,Log.getStackTraceString(new Throwable()));
C++\C打印堆栈
方法一:linux函数
函数介绍
头文件:java
#include
函数方法:linux
// 获取当前的调用栈信息,结果存储在buffer中,返回值为栈的深度,参数size限制栈的最大深度,即最大取size步的栈信息。
int backtrace(void **buffer, int size);
// 把backtrace获取的栈信息转化为字符串,以字符指针数组的形式返回,参数size限定转换的深度,通常用backtrace调用的返回值。
char **backtrace_symbols(void *const *buffer, int size);
// 它的功能和backtrace_symbols差很少,只不过它不把转换结果返回给调用方,而是写入fd指定的文件描述符。
void backtrace_symbols_fd(void *const *buffer, int size, int fd);
编译选项android
-rdynamic
-g
gcc编译时加上-rdynamic和-g编译选项,就能够看到被调用的函