nm命令查找编译符号信息

nm命令查找编译符号信息

gb@gb:~/USB-Device-Mgr/USB-Device-Mgr/lib$ nm libjson.so | grep "cJSON_Parse"
000000000000f6c9 T cJSON_Parse
000000000000f6ed T cJSON_ParseWithLength
000000000000f502 T cJSON_ParseWithLengthOpts
000000000000f4b4 T cJSON_ParseWithOpts
gb@gb:~/USB-Device-Mgr/USB-Device-Mgr/lib$ 
gb@gb:/usr/lib$ nm -D --defined-only /usr/lib/libdrv.so | grep "utp40*"
00000000000273f5 T utp40_adc_calibrate
0000000000013331 T utp40_all_cal
000000000002a913 T utp40_dclevel_calibration_proc
0000000000024207 T utp40_diags_all
0000000000012f77 T utp40_fi
000000000002c3f6 T utp40_fi_calibrate
0000000000013093 T utp40_fi_vclamps
0000000000012bd1 T utp40_fv
00000000000143aa T utp40_fv_fast
0000000000012d48 T utp40_fv_iclamps
0000000000024dc7 T utp40_gang_configure_ext
0000000000013216 T utp40_get_temperature
000000000002e5c7 T utp40_iclamps_calibrate_all_ir
00000000000143e8 T utp40_iclamps_write_val
00000000000132ba T utp40_mi
000000000000c3b3 T utp40_mi_calibrate
00000000000131ad T utp40_mv
00000000000096b4 T utp40_mv_calibrate
000000000000df96 T utp40_read_reg
00000000000128b8 T utp40_reg_dump
000000000000e619 T utp40_rst
000000000001448a T utp40_sync_link_test
0000000000032ee0 T utp40_to_cal_dis_all
0000000000032e6c T utp40_to_cal_en
0000000000032bd2 T utp40_to_dut_en
0000000000032c50 T utp40_to_dut_en_all
000000000003311e T utp40_to_load_dis_all
0000000000033083 T utp40_to_load_en
000000000003317f T utp40_to_load_net_sel
000000000000e206 T utp40_write_reg
gb@gb:/usr/lib$ 

以下是 nm 输出中常见的符号类型的完整解释:

  • T - Text section (Global) 符号在代码段中,是一个全局符号,通常表示一个函数。
  • t - Text section (Local) 符号在代码段中,是一个局部符号,通常表示一个函数。
  • B - BSS section (Global) 符号在 BSS 段(未初始化数据段)中,是一个全局符号,通常表示一个未初始化的全局变量。
  • b - BSS section (Local) 符号在 BSS 段(未初始化数据段)中,是一个局部符号,通常表示一个未初始化的局部变量。
  • D - Data section (Global) 符号在数据段中,是一个全局符号,通常表示一个已初始化的全局变量。
  • d - Data section (Local) 符号在数据段中,是一个局部符号,通常表示一个已初始化的局部变量。
  • R - Read-only data section (Global)
    符号在只读数据段中,是一个全局符号,通常表示一个全局常量或不可修改的数据。
  • r - Read-only data section (Local)
    符号在只读数据段中,是一个局部符号,通常表示一个局部常量或不可修改的数据。
  • U - Undefined 符号在本文件中未定义,但在其他地方定义(例如,在某个库中)。
  • W - Weak (Global) 符号是一个全局弱符号,可能在其他地方定义,也可以被覆盖。
  • w - Weak (Local) 符号是一个局部弱符号,优先级低于其他符号,通常是局部的。
  • V - Weak (Global) Data 符号在共享数据段中,是一个全局弱符号,通常表示一个全局变量。
  • v - Weak (Local) Data 符号在共享数据段中,是一个局部弱符号,通常表示一个局部变量。
  • N - Debugging 符号在调试符号表中(非代码段、数据段或其他特定段),用于调试目的。
  • C - Common (Global) 符号是一个全局的常见符号,通常表示一个未初始化的全局变量。
  • c - Common (Local) 符号是一个局部的常见符号,通常表示一个未初始化的局部变量。

这些符号类型代码帮助了解符号的定义位置和范围,在进行调试、链接和分析时非常有用。

参考文献:

nm 命令的符号类型代码

你可能感兴趣的:(调试,c++,linux,服务器)