当前位置: 首页 > news >正文

网站做软件广州市住房和城乡建设厅网站首页

网站做软件,广州市住房和城乡建设厅网站首页,双桥区网站制作,wordpress修改搜索框嵌入式调试工具1. nm2. addr2line3. readelf3.1 ELF 文件分类3.2 ELF文件组成3.3使用1. nm nm源于name,是linux下一个文本分析工具,可以罗列指定文件中的符号(函数名、变量,以及符号类型)。 nm命令参数如下: 用法:nm …

嵌入式调试工具

      • 1. nm
      • 2. addr2line
      • 3. readelf
        • 3.1 ELF 文件分类
        • 3.2 ELF文件组成
        • 3.3使用

1. nm

nm源于name,是linux下一个文本分析工具,可以罗列指定文件中的符号(函数名、变量,以及符号类型)。

nm命令参数如下:

用法:nm [选项] [文件]列举 [文件] 中的符号 (默认为 a.out)。The options are:-a, --debug-syms       Display debugger-only symbols-A, --print-file-name  Print name of the input file before every symbol-B                     Same as --format=bsd-C, --demangle[=STYLE] Decode low-level symbol names into user-level namesThe STYLE, if specified, can be `auto' (the default),`gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'or `gnat'--no-demangle      Do not demangle low-level symbol names--recurse-limit    Enable a demangling recursion limit.  This is the default.--no-recurse-limit Disable a demangling recursion limit.-D, --dynamic          Display dynamic symbols instead of normal symbols--defined-only     Display only defined symbols-e                     (ignored)-f, --format=FORMAT    Use the output format FORMAT.  FORMAT can be `bsd',`sysv' or `posix'.  The default is `bsd'-g, --extern-only      Display only external symbols-l, --line-numbers     Use debugging information to find a filename andline number for each symbol-n, --numeric-sort     Sort symbols numerically by address-o                     Same as -A-p, --no-sort          Do not sort the symbols-P, --portability      Same as --format=posix-r, --reverse-sort     Reverse the sense of the sort--plugin NAME      Load the specified plugin-S, --print-size       Print size of defined symbols-s, --print-armap      Include index for symbols from archive members--size-sort        Sort symbols by size--special-syms     Include special symbols in the output--synthetic        Display synthetic symbols as well-t, --radix=RADIX      Use RADIX for printing symbol values--target=BFDNAME   Specify the target object format as BFDNAME-u, --undefined-only   Display only undefined symbols--with-symbol-versions  Display version strings after symbol names-X 32_64               (ignored)@FILE                  Read options from FILE-h, --help             Display this information-V, --version          Display this program's version number

参数说明:

  • -A/-o/–print-file-name: 在输出时加上文件名;
  • -a/–debug-syms: 输出所有符号,包含debugger-only symbols;
  • -B/–format=bsd: BSD码显示,兼容MIPS nm;
  • -C/–demangle: 将低级符号名解析为用户级名字,可以使得C++函数名更具可读性;
  • -D/–dynamic: 显示动态符号。该选项只对动态目标(如特定类型的共享库)有意义;
  • -f format/–format=format 使用format格式输出。format可以选取bsd、sysv或posix,该选项在GNU的nm中有用。默认为bsd
  • -g/–extern-only: 只显示外部符号;
  • -l/–line-numbers: 对于每个符号,使用debug信息找到文件名和行号;
  • -n/-v/–numeric-sort: 按符号对应地址的顺序排序,而非按符号名字字符顺序排序;
  • -P/–portability: 按照POSIX2.0标准格式输出,等同于使用 -f posix;
  • -p/–no-sort: 按照目标文件中遇到的符号顺序显示,不排序;
  • -r/–reverse-sort: 反转排序;
  • -s/–print-armap: 当列出库成员符号时,包含索引。索引的内容:模块和其包含名字的映射;
  • -u/–undefined-only: 只显示未定义符号;
  • –defined-only: 只显示定义了的符号。

符号类型 :如果类型是小写的,表示该符号是local的;如果符号是大写的,表示该符号是global(external)的。

符号类型说明
A该符号的值是绝对的,在以后的链接过程中,不允许进行改变。这样的符号值,常常出现在中断向量表中,例如用符号来表示各个中断向量函数在中断向量表中的位置。
B该符号的值出现在非初始化数据段(bss)中。例如,在一个文件中定义全局static int test。则该符号test的类型为b,位于bss section中。其值表示该符号在bss段中的偏移。一般而言,bss段分配于RAM中
C该符号为common。common symbol是未初始话数据段。该符号没有包含于一个普通section中。只有在链接过程中才进行分配。符号的值表示该符号需要的字节数。例如在一个c文件中,定义int test,并且该符号在别的地方会被引用,则该符号类型即为C。否则其类型为B。
D该符号位于初始话数据段中。一般来说,分配到data section中。例如定义全局int baud_table[5] = {9600, 19200, 38400, 57600, 115200},则会分配于初始化数据段中。
G该符号也位于初始化数据段中。主要用于small object提高访问small data object的一种方式。
I该符号是对另一个符号的间接引用。
N该符号是一个debugging符号。
R该符号位于只读数据区。例如定义全局const int test[] = {123, 123};则test就是一个只读数据区的符号。注意在cygwin下如果使用gcc直接编译成MZ格式时,源文件中的test对应_test,并且其符号类型为D,即初始化数据段中。但是如果使用m6812-elf-gcc这样的交叉编译工具,源文件中的test对应目标文件的test,即没有添加下划线,并且其符号类型为R。一般而言,位于rodata section。值得注意的是,如果在一个函数中定义const char *test = “abc”, const char test_int = 3。使用nm都不会得到符号信息,但是字符串“abc”分配于只读存储器中,test在rodata section中,大小为4。
S符号位于非初始化数据区,用于small object。
T该符号位于代码区text section。
U该符号在当前文件中是未定义的,即该符号的定义在别的文件中。例如,当前文件调用另一个文件中定义的函数,在这个被调用的函数在当前就是未定义的;但是在定义它的文件中类型是T。但是对于全局变量来说,在定义它的文件中,其符号类型为C,在使用它的文件中,其类型为U。
V该符号是一个weak object。
WThe symbol is a weak symbol that has not been specifically tagged as a weak object symbol.
-该符号是a.out格式文件中的stabs symbol。
?该符号类型没有定义

2. addr2line

addr2line用于将程序指令地址转换为所对应的函数名、以及函数所在的源文件名和行号。如果无法确定文件名或函数名,addr2line将在它们的位置打印两个问号;如果无法确定行号,addr2line将打印0或一个问号。

addr2line参数如下:

用法:addr2line [选项] [地址]将地址转换成文件名/行号对。如果没有在命令行中给出地址,就从标准输入中读取它们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

参考博客 https://blog.csdn.net/fengbingchun/article/details/119980076

3. readelf

readelf用于读取ELF(Executable and Linkable Format)格式文件的详细信息。

3.1 ELF 文件分类

(1)可重定位文件(Relocatable File),这类文件包含了代码和数据,用于链接生成可以执行文件或共享目标文件,目标文件和静态链接库均属于可重定位文件,例如*.o或lib*.a文件;

(2)可执行文件(Executable File),用于生成进程映像,载入内存执行。Linux 环境下的 ELF 可执行文件一般没有扩展名,例如用户命令 ls;

(3)共享目标文件(Shared Object File),这种文件包含了代码和数据,用于和可重定位文件或其他共享目标文件一起生成可执行文件。例如 Linux 的动态共享对象(Dynamic Shared Object),C 语言运行时库 glibc-2.5.so;

(4)核心转储文件(Core Dump File),当进程意外终止时,系统可以将该进程的地址空间的内容及终止时的一些其他信息转储到核心转储文件。例如 Linux 下的 core dump。

3.2 ELF文件组成

(1)ELF文件头表(ELF header):记录了ELF文件的组织结构(如程序头表的位置和数量,节头表的位置和数量等等)

(2)程序头表/段表(program header table):重定位文件不一定需要,生成进程的可执行文件必须拥有此文件,告诉程序如何创建进程映像

(3)节头表(section header table):记录ELF文件的节区信息(每一个section的入口,名字与大小),用于链接的目标文件必须拥有此结构。

Filename extensionnone, .axf, .bin, .elf, .o, .out, .prx, .puff, .ko, .mod, and .so

在这里插入图片描述

3.3使用

用法:readelf <选项> elf-文件显示关于 ELF 格式文件内容的信息Options are:-a --all               Equivalent to: -h -l -S -s -r -d -V -A -I-h --file-header       Display the ELF file header-l --program-headers   Display the program headers--segments          An alias for --program-headers-S --section-headers   Display the sections' header--sections          An alias for --section-headers-g --section-groups    Display the section groups-t --section-details   Display the section details-e --headers           Equivalent to: -h -l -S-s --syms              Display the symbol table--symbols           An alias for --syms--dyn-syms             Display the dynamic symbol table-n --notes             Display the core notes (if present)-r --relocs            Display the relocations (if present)-u --unwind            Display the unwind info (if present)-d --dynamic           Display the dynamic section (if present)-V --version-info      Display the version sections (if present)-A --arch-specific     Display architecture specific information (if any)-c --archive-index     Display the symbol/file index in an archive-D --use-dynamic       Use the dynamic section info when displaying symbols-x --hex-dump=<number|name>Dump the contents of section <number|name> as bytes-p --string-dump=<number|name>Dump the contents of section <number|name> as strings-R --relocated-dump=<number|name>Dump the contents of section <number|name> as relocated bytes-z --decompress        Decompress section before dumping it-w[lLiaprmfFsoRtUuTgAckK] or--debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=gdb_index,=trace_info,=trace_abbrev,=trace_aranges,=addr,=cu_index,=links,=follow-links]Display the contents of DWARF debug sections--dwarf-depth=N        Do not display DIEs at depth N or greater--dwarf-start=N        Display DIEs starting with N, at the same depthor deeper--ctf=<number|name>    Display CTF info from section <number|name>--ctf-parent=<number|name>Use section <number|name> as the CTF parent--ctf-symbols=<number|name>Use section <number|name> as the CTF external symtab--ctf-strings=<number|name>Use section <number|name> as the CTF external strtab-I --histogram         Display histogram of bucket list lengths-W --wide              Allow output width to exceed 80 characters@<file>                Read options from <file>-H --help              Display this information-v --version           Display the version number of readelf

参考readelf

http://www.yayakq.cn/news/961020/

相关文章:

  • 陕西省建设监理协会官网站崇仁网站建设推广费用
  • 医馆网站建设方案电子政务网站建设背景
  • 英文建站多少钱室内装修设计软件vr
  • 手机网站主页推荐湖南省重点建设项目办公室网站
  • 网站系统繁忙是什么意思外贸通过哪些渠道找客户
  • 写作网站平台做网站要求什么条件
  • 怎样建设个人手机网站网站开发组合 lamp
  • 在哪个网站注册域名好营销推广是什么
  • 集团微信网站方案策划学校校园网站 资源建设方案
  • 杭州网站建设 杭州app网站规划建设与安全管理
  • 深圳网站制作 论坛洮南市城乡和住房建设局网站
  • 宁波 电商平台网站建设长沙seo全网营销
  • 一个域名可以绑定几个网站吗集团网站设计公司
  • ppt设计网站有哪些企业移动网站建设
  • 河源网站网站建设杭州精品网站建设公司
  • 互联网站管理工作细则网页美工设计师
  • 局域网如何建网站河南建设人才招聘专业网站
  • 鲜花网站前台数据库建设广州企业网络推广运营技巧
  • 大连做网站谁家售后好网站开发 作品理念
  • 怎样看网站有没有做301成都计算机培训机构排名前十
  • 新网站应该怎么做seowordpress 搭建wiki
  • 去哪里学做网站app两学一做网站安徽省
  • 网站后台如何备份网络营销的模式有哪些
  • 网站开发公司怎么接单子wordpress主题 Grace
  • 集团网站风格wordpress付款查看
  • 建设银行网站机构特点业务发展公司网站制作效果
  • 加强网站建设的意见家具网站素材
  • 山东闪电建站网wordpress能做大站吗
  • wordpress q8hpk凡科建的网站可以做seo吗
  • 简单个人网站制作开发app和网站的公司