首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux下,使用nm命令输出可执行文件的符号表

可执行文件的符号表(symbol table)记录了某个可执行文件中的函数名、全局变量、宏定义等符号信息,这些信息对于我们调试十分重要。...目前,我正在DragonOS上开发内核栈traceback程序,因此需要导出内核文件的符号表.这个时候就需要用到Linuxnm命令。...nm命令属于GNU binutils的功能,能够输出可执行文件的符号表。它的用法是这样的: 用法:nm [选项] [文件] 列举 [文件] 中的符号 (默认为 a.out)。...按照字典序输出符号表 这里需要用到-n选项,就以DragonOS的内核文件为例,我们输出来看看: nm -n kernel.elf > nm.txt 为了便于查看,上面的命令把nm的输出重定向到了nm.txt...效果如下图: 图片 图片中所看到的就是DragonOS内核的符号表。最左侧一栏指的是符号在内核文件中的地址,中间一栏表示符号类型,最右侧的表示符号的名称。

2.4K30
您找到你想要的搜索结果了吗?
是的
没有找到

数据结构----符号表

首先,定义符号表(有序)的API: public class ST, Value>{ ST()                                                               ...//创建符号表 void put(Key key,Value val)                            //将键值对存入表中 Value get(Key,key)                                       ...                    //[lo...hi]之间的所有键 Iterable keys()                                         //表中所有键的集合 } 符号表的各种实现的优缺点...使用的数据结构 实现 优点 缺点 链表 SequentialSearchST 适用于小型问题 对于大型符号表很慢 有序数组 BinarySearchST 最优的查找效率和空间需求,能够进行有序性相关操作...链接需要额外空间 散列表 SeparateChainHashST LinearProbingHashST 能够快速地查找和插入常见类型数据 需要计算散列 无法进行有序性相关工作 链接和空节点需要额外空间 各种符号表实现的渐进性能总结

75300

Bugly iOS自动导入符号表

前言 ----       最近在处理Bugly问题的时候顺便解决了下符号表上传的问题,使用最新的上传工具包,也是顺便整理了下可以使用的脚本添加到了项目中,把这个过程中遇到的问题总结出来,脚本也会给出来...首先关于什么是符号表符号表是用来干什么的,在哪里找自己的符号表这些问题我们不在这里说,Bugly文档里面说的很详细也很清楚,需要的小伙伴直接去看官方文档。...Bugly iOS 符号表配置文档 脚本设置 ----       我感觉最方便的是在我 Archive 打包的时候时候直接帮我把符号表传上去,在平时的开发过程中自己感觉是不太需要去帮我定位什么问题的,...我们在Xcode中添加脚本位置如下: 第一步:下载工具包 符号表工具下载链接 我使用的版本(符号表工具 '3.3.4')       检查自己的Java环境,我们在终端中输入 java -version...Bugly 符号表上传错误分析+解决办法       3、在Debug环境下我们想上传符号表定位我们的问题,怎么处理?

1.4K10

Xcode 单步调试 WebRTC

生成的静态库没有符号表 如何判断是否是由于没有符号表导致无法单步调试的呢?我们在 Linux 下经常用下面这个命令: nm : 显示二进制目标文件的符号表。...一般的用法是 nm 可执行文件/库文件 | grep 函数名 该命令不光可以在 Linux 上使用,在 Mac 上同样可以使用。如果通过上面的方法查不到相找的函数名,那么说明程序里就没有符号表。...有符号表,但没有与源文件关联到一起 大家看到符号表与源代码关联是不是觉得很奇怪?大部分人只听过符号表,从来没有听过符号表与源代码关联这类说法。...我举个简单的例子大家就清楚了,无论你在什么平台上使用什么语言,如 OC, linux下的 c/c++, java等,你一定用过单步调式或断点调试。...在xcode里提供了一个非常有用的工具dwarfdump,它非常强大,与 Linux 系统下的 readelf 工具差不多,可以打印出可执行程序的详细信息。

2.8K60

链接加载原理及ELF文件格式

作者简介: 伟林,中年码农,从事过电信、手机、安全、芯片等行业,目前依旧从事Linux方向开发工作,个人爱好Linux相关知识分享。 原理概述 为什么要研究链接和加载?...符号表(Symbol Table): 符号表就是一张字符符号和地址的对应表,例如使用“nm file“、”readelf -s file “等命令可以读出一个elf文件的符号表。...符号表的组织如下图所示: 从以上描述中可以看出,符号表的作用就是将符号名称和地址进行绑定。...Linux环境下可执行文件格式的发展历史是:a.out -> coff -> xcoff -> elf。...相关工具 Linux下可以操作elf文件的有以下工具: a.readelf “readelf –a file“读出elf文件的所有信息。 b.nmnm file“读出elf文件的符号表信息。

1.1K20

22nm 与 28nm 工艺的比较

今天有朋友问我,22nm比28nm面积小多少。我说30%吧。他说,这么小?我说,30%都说多了。 ? 注:以下资料来自公开信息,仅做一个与28nm大致的比较。...2 与28nm相比,功耗更低,性能更强。还能通过正负偏压来进行功耗和性能的这种,但是采用偏压的话也不是没有成本。要有额外的IP来提供偏压所需的正负压。...HKMG, as well as performance equivalent to FinFET 与28nm相比,更大的优势在于功耗和性能。...end 综上, 相较于28nm,优势在于性能和功耗。面积的下降有限,约为20%。 mask层数减少。从成本上并不一定比28低,这个还要看能拿到的晶圆的价格。...如果采用22nm的话,工艺可能很难在提高。即使GF的12nmFDX研发成功,基本上这个工艺也就到头了。

87621

程序一定要从main函数开始运行吗?

A: 这里涉及到程序链接的两个步骤: 空间与地址分配:扫描所有的输入目标文件,获得它们每个段的长度属性和位置,收集输入目标文件中的符号表中的所有符号定义和符号引用,统一放到一个全局符号表中,合并所有的段...,这种未定义的符号都是因为该目标文件中有关于他们的重定位项,在链接器扫描完所有的输入目标文件后,所有这种未定义的符号都应该能在全局符号表中找到,否则报符号未定义错误。..."); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr...verbose 可以查看整个编译链接步骤 关于objdump: objdump -i 查看本机目标架构 objdump -f 显示文件头信息 objdump -d 反汇编程序 objdump -t 显示符号表入口...-a 显示所有的符号 nm -D 显示动态符号 nm -u 仅显示没有定义的外部符号 nm -defined-only 仅显示定义的符号 关于符号的说明: 如果符号类型是小写的,表明符号是局部符号,

1.2K30

如何无损压缩 bugly 符号表 40% 体积

背景 ---- 58 同城主 APP 的单架构的 bugly 符号表已经达到了 53MB(解压后 550MB+)。 每次打包都需要存储和每次下载符号表都需要传输 53MB 的数据。...去年一直在解析各种日志,有符号表的,没有符号表的,能记得住打包地址的,记不住打包地址的。 总之,我需要经常在打包平台查找和下载符号表,并人工解析各类日志,这是一个繁琐且痛苦的工作。...因此今年考虑打造一个平台,结合打包服务支持,实现各类日志上传一键解析,无需人工查找匹配符号表。 因此,符号表是越小越好,体积过大自动化工具有一定的影响。因此针对符号表进行二次压缩。...可读和不可读 ---- bugly 的符号表分为 2 种,一种是可读符号表,另一种是不可读符号表。 其中不可读符号表在 2019 年 1 月 22 日以后默认生成的都是不可读符号表。...可读符号表和不可读符号表经过观察得知,两者在所占空间体积上没有显著差异。 本方案针对可读符号表进行压缩。

46230
领券