建设集团网站公司,如何做网站代码,门户网站建设方式,wordpress特效主题免费下载全部学习汇总#xff1a; GreyZhang/toolbox: 常用的工具使用查询#xff0c;非教程#xff0c;仅作为自我参考#xff01; (github.com) GNU有一套二进制的分析工具#xff0c;之前是用过objdump的#xff0c;但是也没有系统掌握。如果做底层软件的设计#xff0c;这些… 全部学习汇总 GreyZhang/toolbox: 常用的工具使用查询非教程仅作为自我参考 (github.com) GNU有一套二进制的分析工具之前是用过objdump的但是也没有系统掌握。如果做底层软件的设计这些工具还是很有用的。后面找时间还得逐个学习一下。这一次简单整理一下nm工具的使用我觉得这个工具肯定是算得上小巧实用了。 Nm主要功能是什么呢我觉得IBM的一份文档资料总结的很好。 这个是IBM的资料网页截图这里说明了nm的功能。它的功能主要是显示出一个指定文件的符号信息的而这个指定的文件可以是目标文件、可执行文件或者目标文件库文件。当然IBM的这个nm并不是我这次要看得GNU的工具的nm但是两者的功能类似。因此我这里借用了一下他们的功能描述。 用户手册中对于这个的描述如上后面略去了关于name的描述信息。如果已经用过了这个工具我觉得还是可以很快熟悉的但是如果没用过或者一点都没概念我觉得这个描述偏抽象。这个描述内容太单薄而下面的具体描述则有点冗长。 这一段是IBM的资料信息看上去明显要简洁明确很多。总结下来nm就是从这几种文件中提取符号信息、类型以及名称的。自然我这个描述借用了IBM的资料模板但是描述了GNU的工具信息。 接下来简单试一下这个工具的功能吧 这个是使用nm分析目标文件的一个测试这里面的信息分了三列分别是地址信息、类型、名字。这里可以看得出来其实这个地址信息的默认显示形式是十六进制这个跟IBM的工具也是不同的。中间的类型U代表符号未定义T代表的是代码段C代表的是未初始化的common数据。 这是上面涉及到的部分符号信息的解释。接下来再看一个文件上面的kernel虽然没有后缀名但其实是一个elf文件。接下来分析一下这个文件。 这里的信息种类更多一些但是有些类型比如b、t等出现了大小写两种。在GNU的工具中大写的通常是代表全局而小写的则代表局部。 这是关于大小写的一个说明但是这个也有一些例外的地方。至于local类型为什么会有地址我觉得很有可能是static修饰类的。 这就算是对nm做一个简单的小结吧那么这个工具对我现在的工作来说有什么用呢我觉得作为调试的辅助信息提取还是很有用的。另外如果处理的对象是ELF等可执行文件我可以从中提取各种变量以及地址的映射表。这个映射表的信息看起来格式非常规整如果在电控开发中用来处理A2L之类的文件信息会非常方便。