美文网首页
c/c++打印堆栈

c/c++打印堆栈

作者: Itachi001 | 来源:发表于2022-05-18 10:49 被阅读0次

Native C++ 代码中要打印堆栈并不复杂,只要使 用已有的类 CallStack 就可以,它放在 system/core/libutils 下面,使用它之前需要将库 libutilscallstack 包进来,步骤如下:

(1) 首先在 Android.bp 中添加库 libutilscallstack,方法如下:

shared_libs: [
    "libutilscallstack",
]

(2) 调用 CallStack 的文件头部将头文件 include 进来:

#include <utils/CallStack.h>

(3) 使用如下方式打印堆栈:

CallStack("yeby");

Native C 代码中打印堆栈

(1) 编写 callstack.cpp

#include <utils/CallStack.h>
#include <android/log.h>

extern "C" void dumping_callstack(const char* msg)
{
    android: CallStack cs;
    cs.update();
    cs.log("yeby", ANDROID_LOG_ERROR, "prefix");
}

(2) 在 Android.bp 中添加源码 callstack.cpp,以及添加库 libutilscallstack 和 liblog,方法如下:

srcs: [
    "callstack.cpp",
]

shared_libs: [
    "liblog".
    "libutilscallstack",
]

(3) 使用如下方式打印堆栈:

extern void dumping_callstack(const char* msg);


char msg[100] = {0};
dumping_callstack(msg);

相关文章

  • c/c++打印堆栈

    Native C++ 代码中要打印堆栈并不复杂,只要使 用已有的类 CallStack 就可以,它放在 syste...

  • 查看Python进程的堆栈

    类似于C/C++调试的pstack,Python也可以打印正在运行的进程的堆栈: pstack · PyPI[ht...

  • 代码中打印C++调用堆栈

    基本动因 有时在进行大型项目的开发时,我发现找出调用某些函数或方法的所有位置非常有用。而且,我不仅仅想要直接调用者...

  • 常见的死法

    溢出(含段错误): 堆栈的大小为8192KB,在c/c++程序的函数中申请了过大的空间,或者递归层次太多,导致堆栈...

  • 堆栈很强大——C/C++堆栈指引

    我们经常会讨论这样的问题:什么时候数据存储在飞鸽传书堆栈(Stack)中,什么时候数据存储在堆(Heap)中。我们...

  • Lua和C交互的简易教程

    Lua栈 要理解Lua和C++交互,首先要理解Lua堆栈。简单来说,Lua和C/C++语言通信的主要方法是一个无处...

  • Lua和C如何交互(一)

    要理解Lua和C的交互,先要理解堆栈和全局表两个概念 堆栈 Lua和C/C++语言交互的主要方法是一个无处不在的虚...

  • 查看JVM信息的命令

    1. jstack 获取线程堆栈信息 打印堆栈信息到标准输出 jstack PID 打印堆栈信息到标准输出,会打印...

  • Frida Hook

    - Hook Dlopen - Java堆栈打印 - Native堆栈打印 - HookJava中的loadLib...

  • iOS-底层(11):dyld加载流程

    +load方法、c++函数、main函数的调用顺序 从打印顺序我们可以看到:** +load方法 -> c++函数...

网友评论

      本文标题:c/c++打印堆栈

      本文链接:https://www.haomeiwen.com/subject/pytaurtx.html