`

打印调用堆栈

 
阅读更多
平常我们遇到不清楚代码逻辑的,可以通过打印调用堆栈来理清楚,如下为各层打印堆栈的方法:
1. Java打印调用堆栈
Exception e = new Exception("test");
e.printStackTrace();
或者
Log.d("test",Log.getStackTraceString(new Throwable()));

2. JNI打印调用堆栈
class  throwable_class = env->FindClass("java/lang/Throwable");
jmethodID  throwable_init = env->GetMethodID(throwable_class, "<init>", "(Ljava/lang/String;)V");
jobject throwable_obj = env->NewObject(throwable_class, throwable_init, env->NewStringUTF("setDisplayOrientation"));
    jmethodID throwable_mid = env->GetMethodID(throwable_class, "printStackTrace", "()V");
env->CallVoidMethod(throwable_obj, throwable_mid);
3.
C++打印调用堆栈
#include <utils/CallStack.h>
… …
CallStack stack(LOG_TAG);
分享到:
评论

相关推荐

    VC中打印当前调用堆栈信息实例

    在这个例子中,`PrintCallStack`函数负责打印调用堆栈信息。`__try`和`__except`用于捕获异常,当异常发生时,调用`PrintCallStack`。`CaptureStackBackTrace`获取栈帧地址,`SymFromAddr`将内存地址转换为函数名,`...

    cpp打印调用堆栈

    标题“cpp打印调用堆栈”涉及到的是C++编程中的一种调试技巧,即在程序运行时获取函数调用序列的能力。这种技术对于定位程序错误、理解代码执行流程以及进行性能分析非常有用。以下是对这个主题的详细解释: 在C++...

    VC中如何打印当前调用堆栈

    首先,确保你的项目是在调试模式下编译的,因为打印调用堆栈的功能在调试版本中才有。在VC6中,打开项目的属性页,选择“配置属性” -&gt; “连接器” -&gt; “调试”,确保“生成调试信息”选项已勾选。 ### 2. 使用...

    调用堆栈的类

    在这个类中,`print`方法调用`getStackTrace`来获取并打印调用堆栈。`getStackTrace`会进行堆栈回溯并解析符号,返回一个包含每个帧信息的字符串向量。 需要注意的是,这个类的实现会依赖于特定平台的API和库,如在...

    go 代码的调试—打印调用堆栈的实例

    本文介绍如何打印调用堆栈进行go代码的调试。 打印堆栈使用的runtime package中的Stack()函数 func Stack(buf []byte, all bool) int Stack formats a stack trace of the calling goroutine into buf and returns ...

    StackWalk64打印当前线程堆栈的示例

    StackWalk64打印当前线程堆栈的示例

    go 代码的调试---打印调用堆栈的实例

    ### Go 代码调试:打印调用堆栈实例详解 在 Go 语言开发过程中,调试是不可或缺的一环。本文将深入探讨如何通过打印调用堆栈来进行 Go 代码调试,并通过一个具体的示例来帮助读者更好地理解和掌握这一技巧。 #### ...

    函数递归调用堆栈分析.doc

    函数递归调用堆栈分析 函数递归调用堆栈分析是指在计算机科学中,函数递归调用时,函数调用自身的过程中,如何使用堆栈来存储变量和参数的过程。堆栈是一种 lasts-in-first-out(LIFO)的数据结构,用于存储函数...

    Android下各语言加callStack示例

    本文将深入探讨如何在Android环境下为不同语言(C语言、C++、Java以及内核空间)添加并打印调用堆栈信息。 首先,让我们来看看Java语言的call stack。在Java中,我们可以利用`Thread.currentThread().getStackTrace...

    浅谈在linux kernel中打印函数调用的堆栈的方法

    首先,Linux内核提供了一个简单的函数`dump_stack()`,用于在内核代码中快速打印当前的函数调用堆栈。这个函数通常在遇到错误条件或者需要调试的点被调用。`dump_stack()`函数的定义位于`~/kernel/lib/dump_stack.c`...

    用于打印堆栈的Hook脚本

    frida hook操作 打印调用堆栈的js脚本 只需要在你原本的方法之中调用就可以使用 可以打印出从孵化进程开始之后的调用堆栈

    追踪谁调用了函数

    它可能包含了对上述方法的实现,或者使用了特定的API来获取和打印调用堆栈。`stdafx.cpp`通常包含预编译的头文件,如`stdafx.h`,这在Visual Studio项目中用于提高编译速度。`targetver.h`定义了程序的目标版本,...

    C++异常处理之大全,包括SEH,CRT函数,打印堆栈等相关知识

    本文将深入探讨C++异常处理的各个方面,包括结构化异常处理(SEH)、C运行时库(CRT)函数以及如何打印调用堆栈。这些知识对于编写健壮的C++代码至关重要。 首先,我们来了解一下结构化异常处理(SEH)。SEH是...

    打印函数堆栈

    打印函数调用堆栈,用于调试,显示程序运行时的函数调用关系。

    linux C用户态调试追踪函数调用堆栈以及定位段错误.docx

    但是,在某些情况下,例如长时间运行的程序中,需要在程序出错时打印出函数的调用堆栈,以便于分析程序的 BUG。这时,可以使用 glibc 头文件 "execinfo.h" 中声明的三个函数来获取当前线程的函数调用堆栈。 这三个...

    打印JAVA堆栈的方法

    通常情况下,前几个栈帧可能包含的是打印堆栈方法本身及调用它的方法的信息,对问题定位帮助不大,因此在实际应用中可以根据具体需求调整这一数值。 ### 方法二:使用异常抛出 另一种常见的打印堆栈的方法是通过...

    动态分等级打印.Linux 程序开发打印 Debug 信息的使用技巧--C语言中几种输出调试信息的方法_精品文库_IThao12

    2. `backtrace()` 和 `backtrace_symbols()`:获取和打印调用堆栈,这对于分析程序崩溃原因非常有用。 在实际开发环境中,为了保持代码整洁,通常会将这些调试输出集中管理,比如封装到一个单独的日志模块,或者...

    MyStaceTrace打印堆栈代码

    为了实现跨平台的堆栈跟踪,开发者可能需要编写特定于平台的代码来处理底层差异,例如在Windows上使用`_asm`或`__asm__`关键字进行汇编级操作,而在Linux上则使用`ucontext_t`或`siginfo_t`结构来获取调用堆栈信息。...

    错误日志库实现打印错误堆栈

    打印错误堆栈是一种高级功能,它能记录错误发生时调用函数的顺序,即从最终出错的函数回溯到最初的调用者。这在调试复杂程序时非常有用,因为它展示了错误发生的完整路径。实现这一功能需要以下几个步骤: 1. **...

    linux程序崩溃堆栈信息打印库

    在信号处理器内部,调用`backtrace`和`backtrace_symbols`来获取并打印堆栈信息,然后再终止程序,以便开发者能根据这些信息分析问题。 在运维环境中,了解如何利用`libexecinfo`库可以大大提高故障诊断效率。例如...

Global site tag (gtag.js) - Google Analytics