linux调试或定位命令

前言

记录一些在编程或者调试过程中用到的linux系统命令,这些命令在编码或者调试过程中,能够起到很好的帮助作用。

tcpdump 抓包分析

1
tcpdump -i any -w test.pcap

对任何网卡的数据进行抓包并将抓包结果存储为test.pcap

strings 搜索可执行文件中包含的字符

1
strings test | grep "somestring"

nm 查看某库是否包含某个接口

1
nm libtest_interface.a | grep test

查看libtest_interface.a中是否包含test相关接口

readelf 查看目标文件信息

1
readelf -h libdb.a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
File: libgmock.a(gmock-all.o)
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: REL (Relocatable file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x0
Start of program headers: 0 (bytes into file)
Start of section headers: 1281856 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 0 (bytes)
Number of program headers: 0
Size of section headers: 64 (bytes)
Number of section headers: 2118
Section header string table index: 2115

可以看到目标文件的一些信息

addr2line 定位core dump问题

1
addr2line -e test test_add.so 0x0011d680 -f

比如core dump的地址为0x0011d680,so文件为test_add.so,可以使用上面的命令知道哪一行出了问题
addr2line -e 进程 地址

守望 wechat
关注公众号[编程珠玑]获取更多原创技术文章
出入相友,守望相助!