首页
学习
活动
专区
工具
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.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据结构----符号表

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

    76800

    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

    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研发成功,基本上这个工艺也就到头了。

    91421

    链接加载原理及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.2K20

    程序一定要从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

    吴章金: 实例解析 Linux C 语言程序之变量类型

    ---- license: "cc-by-nc-nd-4.0" "本文从编译、二进制程序文件和运行角度逐级解析了 Linux C 语言程序中几种变量类型" 吴章金老师《360度剖析Linux ELF...系列文章》: 吴章金:如何创建一个*可执行*的共享库 吴章金: 深度剖析 Linux共享库的“位置无关”实现原理 吴章金:通过操作 Section 为 Linux ELF 程序新增数据 背景说明...补充另外一个 nm 工具的结果,针对加 static 的情况: $ nm print.o | egrep "hello$|print$" 00000000 d hello 00000000 t print...这个工具是因为,Linux 内核的 System.map 这样的符号表文件经常会被用来调试,这个文件实际上是用 nm 导出来的。...3.函数内非 static 定义的变量,以及函数参数的传递都是通过 Stack 完成的,这些变量只在函数内(包括 Caller, Callee)可见,外部不可见,所以在符号表中也找不到它们。

    1K30

    不只2nm!日本Rapidus还计划兴建1nm晶圆厂

    社长小池淳义说明了将在北海道千岁市兴建该公司首座2nm工厂和员工招聘情况。该座千岁工厂将兴建2栋以上的厂房,除了2nm之外,还将兴建1nm晶圆代工厂。...报导指出,Rapidus将基于IBM的2nm制程技术,研发“Rapidus版”制造技术,计划在2025年试产逻辑芯片,2027年开始进行量产。...2(第2栋厂房)”将生产2nm之后的新一代(1nm等级)的产品。...Rapidus公司发言人表示,Rapidus 预计用于商业生产和 2nm 技术发展的投资将达到约 5 万亿日元(约合人民币2555亿元)。...另外,在技术来源方面,Rapidus曾在去年12月和IBM达成战略性伙伴关系,双方将携手推动基于IBM突破性的2nm制程技术的研发,而该2nm技术将导入于此次决定兴建的北海道千岁工厂内。

    17710
    领券