记录 | ubuntu nm命令的基本使用

什么是nm命令

nm命令是linux下针对某些特定文件的分析工具,能够列出库文件(.a、.lib)、目标文件(*.o)、可执行文件的符号表。

nm命令的常用参数

-A 或 -o 或 --print-file-name:打印出每个符号属于的文件

-a 或 --debug-syms:显示调试符号。

-B:等同于–format=bsd,用来兼容MIPS的nm。

-C 或 --demangle:将低级符号名解码(demangle)成用户级名字。这样可以使得C++函数名具有可读性。

-D 或 --dynamic:显示动态符号。该任选项仅对于动态目标(例如特定类型的共享库)有意义。

-f forma 或 --format=formatt:使用format格式输出。format可以选取bsd、sysv或posix,该选项在GNU的nm中有用。默认为bsd。

-g 或 --extern-only:仅显示外部符号。

-n 、-v 或 --numeric-sort:按符号对应地址的顺序排序,而非按符号名的字符顺序。

-p 或 --no-sort:按目标文件中遇到的符号顺序显示,不排序。

-P 或 --portability:使用POSIX.2标准输出格式代替默认的输出格式。等同于使用任选项-f posix。

-s 或 --print-armap:当列出库中成员的符号时,包含索引。索引的内容包含:哪些模块包含哪些名字的映射。

-r 或 --reverse-sort:反转排序的顺序(例如,升序变为降序)。

--size-sort:按大小排列符号顺序。该大小是按照一个符号的值与它下一个符号的值进行计算的。

-t radix 或 --radix=radix:使用radix进制显示符号值。radix只能为“d”表示十进制、“o”表示八进制或“x”表示十六进制。

--target=bfdname:指定一个目标代码的格式,而非使用系统的默认格式。

-u 或 --undefined-only:仅显示没有定义的符号(那些外部符号)。

-l 或 --line-numbers:对每个符号,使用调试信息来试图找到文件名和行号。对于已定义的符号,查找符号地址的行号。对于未定义符号,查找指向符号重定位入口的行号。如果可以找到行号信息,显示在符号信息之后。

-V 或 --version:显示nm的版本号。

--help:显示nm的任选项。

举个栗子

  1. 编写源文件test.c
#include <stdio.h>

const char ch = 'x';
int uninit;
int init = 10;

void function() {
    int *ref = &init;
    static int sta_int = 10;
    printf("%c", ch);
}
  1. 编译test.c文件 生成test.o
gcc -c test.c
  1. 用nm命令分析符号表

nm -n test.o(-n以地址排序,方便查看)

输出结果:

                 U putchar
0000000000000000 R ch
0000000000000000 T function
0000000000000000 D init
0000000000000004 d sta_int.2182
0000000000000004 C uninit

各列信息的含义:

第一列:符号值,即该符号的起始地址

第二列:符号类型,各字母代表什么类型在下一小节中介绍

第三列:符号名称

输出符号类型详解

  • 符号类型大写代表全局符号,小写代表本地符号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/360664.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跟着pink老师前端入门教程-day14+15

2.6 main 主体模块制作 HTML&#xff1a; <div class"w"><div class"main"><!-- 焦点图模块 --><div class"focus"><ul><li><img src"./images/banner_bg.png" alt""></li>…

【Midjourney】关于标准模型的几个按钮都有什么用

当用户在Midjourney Bot所在的服务发送/settings命令时就能调出设置窗口&#xff0c;本文将介绍该窗口中的各个按钮都有什么作用。 1.RAW Mode 依照官方的描述来看V5.2模型似乎带有自动优化功能&#xff0c;会对用户输入的关键词空白描述进行补全和优化&#xff0c;以便修复所…

ansible 常用命令 基本说明 个人备忘

linux下设置一台机器的名称为ansible hostnamectl set-hostname ansible //设置一台机器的名称为master-01 hostnamectl set-hostname master-01 hostnamectl set-hostname master-02 hostnamectl set-hostname node01 hostnamectl set-hostname node02 hostnamectl set-…

Linux 入门基础知识(一)—— Linux的基本使用

Linux 入门基础知识 一、Linux的基本使用和配置1.1、终端1.2、消耗内存1.3、运行级别1.6、登录前欢迎语1.5、登录后欢迎语1.6、shell1.7、ps aux1.8、设置主机名1.9、whoami和who am i1.10、命令提示符 二、Linux执行命令的过程详解和命令类型2.1、命令执行2.2、hash缓存表2.3、…

MySQL的原生API实现插入数据后在可视化工具上不显示的问题解决

显示表中有两行数据&#xff0c;该表也设置了主键和唯一索引 点进表里看却没有数据 问题原因出现在这里&#xff0c;虽然很多常用的数据库连接池都会开启自动提交&#xff0c;但ibatis的SqlSession使用sessionFactory.openSession()创建时&#xff0c;默认的自动提交是false&am…

晶相光电 JX-A05 车规级 200万 像素图像传感器

晶相光电推出的 JX-A05 是一款 1/2.7英寸、3.0m、90fps12bit 的车规级 200万 像素图像传感器。JX-A05 拥有三段曝光 HDR 30fps 技术&#xff0c;实现高达 120dB 的高动态范围。汽车在夜间行驶复杂多变恶劣的光线环境下&#xff0c;JX-A05 拥有优异的夜视全彩成像性能。JX-A05 具…

CTFHub | DOM反射

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习&#xff0c;实训平台。提供优质的赛事及学习服务&#xff0c;拥有完善的题目环境及配套 writeup &#xff0c;降低 CTF 学习入门门槛&#xff0c;快速帮助选手成长&#xff0c;跟随主流比赛潮流。 0x01 题目描述…

java大文件分片上传

1.效果图 2.前端html <!DOCTYPE html> <html> <head></head> <body> <form><input type"file" id"fileInput" multiple><button type"button" onclick"upload()" >大文件分片上传&l…

iOS17使用safari调试wkwebview

isInspectable配置 之前开发wkwebview的页面的时候一直使用safari调试&#xff0c;毕竟jssdk交互还是要用这个比较方便&#xff0c;虽说用一个脚本插件没问题。不过还是不太方便。 但是这个功能突然到了iOS17之后发现不能用了&#xff0c;还以为又是苹果搞得bug&#xff0c;每…

盲盒小程序开发,实现“双收益”

盲盒在我国是一个发展潜力较高的市场&#xff0c;盲盒具有的刺激和收藏价值&#xff0c;深受消费者的喜爱&#xff0c;盲盒的“隐藏款”机制&#xff0c;能够为消费者带来惊喜感。盲盒一般与影视动漫IP合作&#xff0c;推出盲盒商品&#xff0c;这也是深受年轻人追捧的一大特点…

ManticoreSearch-(安装配置,集群搭建)-学习总结

ManticoreSearch-(安装配置)-学习总结 基础概念安装搭建集群搭建(基于K8S) 原文地址 https://blog.csdn.net/liuyij3430448/article/details/135955025 基础概念 Manticore Search是一个专门为搜索设计的多存储数据库&#xff0c;具有强大的全文搜索功能&#xff0c;适用于…

【原神游戏开发日志5】同地图多客户端玩家同步

版权声明&#xff1a; ● 本文为“优梦创客”原创文章&#xff0c;您可以自由转载&#xff0c;但必须加入完整的版权声明 ● 文章内容不得删减、修改、演绎 ● 本文视频版本&#xff1a;见文末 ● 相关学习资源&#xff1a;见文末 前言 ● 今天给大家分享选角色、进游戏 打包…

员工持股方案

目的&#xff1a;为激发员工积极性&#xff0c;留住好员工&#xff0c;给员工提供创业机会&#xff0c;使员工共同关注企业发展&#xff0c;建立促进企业发展的激励机制。股权设置与持股比例&#xff1a; 公司以总资产 万元&#xff0c;折合股权 份&#xff0c;每股 …

【algorithm】一个简单的PID工程 base 用于手生时候快速复习 用于设计模式 cpp语法八股 快速复习校验

写在前面 最近项目一直用matlab&#xff0c;防止手生整一个回忆工具使用的简单的pid demo&#xff0c;走一边流程&#xff0c;包括配工程debug看结果&#xff0c;复用之前记录的配置见我的bloghttps://blog.csdn.net/weixin_46479223/article/details/135082867?csdn_share_t…

【算法】登山(线性DP,最长上升)

题目 五一到了&#xff0c;ACM队组织大家去登山观光&#xff0c;队员们发现山上一共有N个景点&#xff0c;并且决定按照顺序来浏览这些景点&#xff0c;即每次所浏览景点的编号都要大于前一个浏览景点的编号。 同时队员们还有另一个登山习惯&#xff0c;就是不连续浏览海拔相…

小程序样例4:个人中心+我的书单

基本功能&#xff1a; 1、展示个人基本信息&#xff1a;头像、昵称 、读书时间统计 2、邮件列表&#xff0c;点击加入计划跳转到书架 3、今日任务 学习进度 4、邮件滑动到最末尾或者最开始&#xff0c;会有弹框提示&#xff1a; 5、图书搜索框 代码分析&#xff1a; 1、邮件…

和朋友随时随地玩——幻兽帕鲁服务器极简部署流程

什么是游戏服务器&#xff1f;通俗来说就是一个公共的电脑&#xff0c;玩家可以在任意时刻进入服务器游玩&#xff0c;不需要等待某个玩家创建房间&#xff0c;即可任意在一个世界一起游戏 本文将为您提供极简部署幻兽帕鲁服务器的指引&#xff0c;「仅需轻点三次鼠标&#xff…

get out of black background

文章目录 基础 Sequence settings (after selected a Sequence) 看见 ( 让Pr表示透明 ) Effects-> Color Key, drag into your Sequence >.如果看不到 Effects 面板, 可以在 Window 菜单中打开 在Effect Controls 你可以调整 Color Key 的效果了先吸取黑色 还可以使用ma…

力扣136、只出现一次的数字(简单)

1 题目描述 图1 题目描述 2 题目解读 在非空整数数组nums中&#xff0c;有一个元素只出现了一次&#xff0c;其余元素均出现两次。要求找出那个只出现一次的元素。 3 解法一&#xff1a;位运算 位运算&#xff0c;是一种非常简便的方法。 3.1 解题思路 异或运算&#xff0c;有…

力扣hot100 数组中的第K个最大元素 堆 三路划分

Problem: 215. 数组中的第K个最大元素 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 参考 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( log ⁡ n ) O(\log{n}) O(logn) Code class Solution {public int findKthLargest(int[] nums, int k…