美文网首页
【C++ 精选】调试工具 - 查看内存对应的函数、文件名等信息

【C++ 精选】调试工具 - 查看内存对应的函数、文件名等信息

作者: 熊本极客 | 来源:发表于2024-02-17 11:31 被阅读0次

1.Addr2line 简介和安装

Addr2line 是一个用于将程序计数器(PC)地址转换为源代码文件名和行号的工具。它通常用于调试程序时查找特定地址对应的源代码位置。Addr2line 通常与调试符号文件(.debug文件)一起使用,以便能够正确地解析地址到源代码的映射关系。Addr2line 是 GNU binutils 工具集的一部分。

$yum install binutils
Last metadata expiration check: 1:28:21 ago on Sun 18 Feb 2024 10:00:14 AM CST.
Package binutils-2.34-18.oe1.aarch64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!

2.Addr2line 使用

$addr2line -h
Usage: addr2line [option(s)] [addr(s)]
 Convert addresses into line number/file name pairs.
 If no addresses are specified on the command line, they will be read from stdin
 The options are:
  @<file>                Read options from <file>
  -a --addresses         Show addresses
  -b --target=<bfdname>  Set the binary file format
  -e --exe=<executable>  Set the input file name (default is a.out)
  -i --inlines           Unwind inlined functions
  -j --section=<name>    Read section-relative offsets instead of addresses
  -p --pretty-print      Make the output easier to read for humans
  -s --basenames         Strip directory names
  -f --functions         Show function names
  -C --demangle[=style]  Demangle function names
  -R --recurse-limit     Enable a limit on recursion whilst demangling.  [Default]
  -r --no-recurse-limit  Disable a limit on recursion whilst demangling
  -h --help              Display this information
  -v --version           Display the program's version
#code dump的内容如下所示:
Stack: [0x0000ffe9e4bb0000,0x0000ffe9e4db0000],  sp=0x0000ffe9e4daa090,  free space=2024k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [ld-linux-aarch64.so.1+0x1addc]
C  [ld-linux-aarch64.so.1+0x6dfc]
C  [ld-linux-aarch64.so.1+0x2120]
C  [libc.so.6+0x12bda4]  _dl_catch_exception+0x74
C  [ld-linux-aarch64.so.1+0x2684]
C  [ld-linux-aarch64.so.1+0xae18]
C  [libc.so.6+0x12bda4]  _dl_catch_exception+0x74
C  [ld-linux-aarch64.so.1+0xa5e4]
C  [libc.so.6+0x12bda4]  _dl_catch_exception+0x74
C  [ld-linux-aarch64.so.1+0xa9b8]
C  [libc.so.6+0x7b344]
C  [libc.so.6+0x12bda4]  _dl_catch_exception+0x74
C  [libc.so.6+0x12be70]  _dl_catch_error+0x40
C  [libc.so.6+0x7ae20]
C  [libc.so.6+0x7b418]  dlopen+0x88
V  [libjvm.so+0x9fdf70]  os::dll_load(char const*, char*, int)+0x50
V  [libjvm.so+0x7c47b0]  JVM_LoadLibrary+0x90
C  [libjava.so+0x10850]  Java_java_lang_ClassLoader_00024NativeLibrary_load+0x140
j  java.lang.ClassLoader$NativeLibrary.load(Ljava/lang/String;Z)V+0
j  java.lang.ClassLoader.loadLibrary0(Ljava/lang/Class;Ljava/io/File;)Z+328
j  java.lang.ClassLoader.loadLibrary(Ljava/lang/Class;Ljava/lang/String;Z)V+48
j  java.lang.Runtime.load0(Ljava/lang/Class;Ljava/lang/String;)V+57
j  java.lang.System.load(Ljava/lang/String;)V+7
...省略      

$addr2line -e /usr/lib64/libc.so.6 0x7b418 -f -a -C   
0x000000000007b418
dlopen
??:?                                                                                                         

【参考】
Linux调试工具 | Addr2line

相关文章

  • Odin Inspector 系列教程 --- Serializ

    Odin包含一个Serialization Debugger工具,用于调试查看对应的序列化信息.如果在Inspec...

  • 二十三、程序调试

    二十三、程序调试 1.如何查看崩溃信息 2.常见的崩溃信息,代表了什么意思 3.开发常用工具,检查内存泄漏

  • 环境-GDB的使用入门

    一、GDB(GNU Debuger)的作用(1)调试工具,设置断点,查看当前局部,全体等变量信息二、使用方法(1)...

  • Flutter相关优化

    性能优化 1、内存优化使用flutter performance等工具查看内存和帧率使用DevTools来gc查看...

  • Android内存泄漏分析

    1 .工具介绍 1.1使用Android Studio查看内存快照: (1)可以查看对象对应的文件目录及内容,比如...

  • dev c++设置

    dev c++ 调试的时候显示项目没有调试信息,您想打开项目调试选项并重新生成吗? 答:工具——》编译选项--》代...

  • 玩转寄存器 by debug

    debug调试工具是调试汇编程序(8086方式)的常用工具,使用debug可以查看CPU各种寄存器以及内存内容。目...

  • iOS逆向工程(八):动态调试

    动态调试 一、什么是动态调试 动态调试就是将程序运行起来,通过打断点、打印等方式,查看参数、返回值、函数调用流程等...

  • Linux 基础硬件信息的命令

    CPU 查看的是cpu的统计信息. cpu具体信息 如每个CPU的型号,主频等。 内存 概要查看内存情况 这里的单...

  • iOS逆向-动态调试

    动态调试 将程序运行起来,通过断点,打印等方式,查看参数,返回值,函数调用流程等 Xcode动态调试原理 xcod...

网友评论

      本文标题:【C++ 精选】调试工具 - 查看内存对应的函数、文件名等信息

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