Linux下常用调试工具总结

kdump+crash使用:

kdump是linux下分析内核崩溃原因的工具。系统崩溃时,kdump用于转储运行内存,捕获当前运行信息,将此时内存中所有运行状态和数据信息收集到一个dump core文件中(一般是在var/crash中的vmcore),以便后续分析。(ps:虚拟机中设置的crash memory为256M,过大或过小都不行)

crash是用于分析kdump生成的core文件的工具。crash常用的指令:

(1)log:显示内核消息缓存区

(2)bt:显示内核崩溃前的堆栈信息(可以指定进程号,如:bt <pid>)

(3)ps:显示系统中进程状态

(4)dis:对给定地址进行反汇编

其中,我们在项目中常用到的指令是log、bt和dis,具体而言:

(1)在代码中写入printk打印的某些信息,在内核崩溃后用log指令查看。

(2)bt显示内核崩溃前的堆栈信息,找到其中的崩溃点RIP,再用dis反汇编RIP提供的地址,从而找到程序中出错的位置(具体到函数指令)

vim使用:

vim是linux下编写程序的环境工具,通过vim /usr/code.cpp指令打开,常用指令如下:

(1)正常模式下光标上下左右:           h:左        j:下        k:上          l:右

(2)正常模式下保存和退出:           不保存退出::q            保存退出::wq    (ps:q或wq后加!表示强制退出)

(3)正常模式下删除:                 单个字符:x         整行:dd         光标至行末:d$

(4)正常模式下撤销:               撤销最后指令:u

(5)正常模式下置入:               将最后删除的内容复制到光标处:p

(6)正常模式下替换:                将光标所有字符替换为指定字符:r字符

(7)正常模式下跳转:               跳转至最后一行:Shift-G         跳转至指定行21:输入21后输入Shift-G

(8)正常模式下搜索:                搜索"int":/int          查找下一个:n

(9)正常模式下复制:                复制n个整行:nyy           复制至行尾:y$        复制指定n0-n1行置n2行:  :n0,n1 co n2

(10)正常模式进入插入模式:         从光标处插入:i             从光标下一行插入:o             从光标下一字符插入:a

gdb使用:

gdb是linux下的程序调试工具,可以进行设置断点和单步执行、检测死锁操作等。

(1)启动gdb调试:     gdb 程序路径(ps:gdb /usr/code/bucket)

(2)设置断点:          1.  b 程序名:行号(ps:b bucket.cpp:21)         2.   b 程序名:函数名(ps:b bucket.cpp:main)

(3)运行到断点处:     r (ps:r会运行到断点处,并显示断点行代码和断点所在函数)

(4)查看断点:          info breakpoints(ps:会显示断点编号、类型、所属行数和函数)

(5)删除断点:          delete 断点编号

(6)显示断点周围代码: l

(7)单步执行:         会进入中间调用函数的单步:s           会跳过中间调用函数的单步:n

(8)继续执行:           c

(9)查看和设置变量:        查看变量i:p i             设置变量i的值为5: set i = 5

(10)退出gdb:          q

netstat使用:

netstat是linux系统用于监测TCP/IP网络的工具,可以监听TCP、UDP、ICMP等网络连接,以及查看路由表等功能。常用的指令有:

(1)netstat -a     列出所有连接

(2)netstat -t      列出TCP连接

(3)netstat -u     列出UDP连接

(4)netstat -c     持续列出连接

(5)netstat -s     显示连接统计信息

(6)netstat -n     直接使用IP而不通过DNS

(7)netstat -p     显示PID和进程名称

(8)netstat -r     显示内核IP路由表

实际中常用的复合指令是:

netstat -actnp | grep 80          持续显示所有80端口的tcp连接,并且显示进程和PID

netstat -actnp | grep chrome   持续显示所有chrome进程的tcp连接

tcpdump使用:

tcpdump是linux下的抓包工具,可以将网络中传输数据包的报头完全截获下来提供分析。可以只抓tcp的SYN或ACK等特定包,也可以只抓HTTP的POST或GET指令的包等等。常用的指令有:

(1)tcpdump -i eth0               -i表示指定抓包的接口,如:eth0、wlan0等等(ifconfig中inet有值都可以抓)

(2)tcpdump -A                     -A表示以ascii的形式显示每一个数据包

(3)tcpdump -c  100              -c表示抓取指定数量的包,如抓100个就是tcpdump -c 100

(4)tcpdump -t                      -t表示不显示时间戳

(4)tcpdump host                   host后可以加IP或域名,如:host www.baidu.com

(5)tcpdump port                   port后加监听的端口号,如:port 80

(6)tcpdump src net               src net后接源IP地址

(7)tcpdump -w ./data.cap      -w使输出的信息保存到./data.cap中,方便之后分析

实际中常用的指令是:

tcpdump -i eth9 -t -A -c 100 host www.baidu.com and port 80 -w ./data.cap

ipcs使用:

ipcs是linux下用于查看进程间通信的共享内存、消息队列、信号量的信息的工具。常用的指令有:

(1)ipcs -a                  查看linux下共享内存、消息队列、信号量的所有信息,包括:key、ID、拥有者、字节数、状态等等。

(2)ipcs -p                  查看linux下共享内存、消息队列的相关进程号,如:消息队列的发送进程和接收进程的PID。

(3)ipcs -u                  查看linux下共享内存、消息队列、信号量已使用的资源情况。

(4)ipcs -l                   查看linux下共享内存、消息队列、信号量的系统资源限制情况,如:最大个数、最大占用空间等。

(5)ipcs -t                   查看linux下共享内存、消息队列、信号量的创建和断开时间。

(6)ipcs -m -q -s          -m表示查看共享内存,-q表示查看消息队列,-s表示查看信号量。

ipcrm使用:

ipcrm是linux下用于删除共享内存、消息队列、信号量的IPC资源的工具。常用的指令有:

(1)ipcrm -M key            通过key删除共享内存

(2)ipcrm -m id               通过id删除共享内存

(3)ipcrm -Q key            通过key删除消息队列

(4)ipcrm -q id                通过id删除消息队列

(5)ipcrm -S key            通过key删除信号量

(6)ipcrm -s id                通过id删除信号量

原文地址:https://www.cnblogs.com/ladawn/p/8496310.html

时间: 2024-10-27 19:06:07

Linux下常用调试工具总结的相关文章

Linux下常用的系统性能查看分析工具

Linux中,很多很全面显示系统当前运行状态,负载,I/O等信息的工具,帮助管理员实时了解系统运行动态,以及排除故障. ps命令:显示进程状态,快照方式显示. 进程分为两类:一类是用户通过终端启动的进程,一类是与终端无关的进程,多为守护进程. ps命令支持两种风格的命令:SysV风格 BDS风格.带横线的是SysV风格. ps命令选项:     a  :与终端有关的进程     x  : 与终端无关的进程     u  : 显示是哪个用户启动的       -e : 显示所有进程     -f 

linux下常用命令备忘

转自:Linux 命令集锦 linux下查看监听端口对应的进程 # lsof -i:9000 # lsof -Pnl +M -i4 如果退格键变成了:"^h". 终端连接unix删除退格键,按住CTL键同时按delete Linux搜索 # find / -name "xxx.conf" 查看linux是32位还是64位的命令 #file /sbin/init #getconf LONG_BIT #getconf -a 在Linux和Windows下都可以用nslo

Linux下常用安全策略如何设置?

本文和大家分享的主要是linux下常用安全策略设置的一些方法,一起来看看吧,希望对大家学习linux有所帮助. 安全第一"对于linux管理界乃至计算机也都是一个首要考虑的问题.加密的安全性依赖于密码本身而非算法!而且,此处说到的安全是指数据的完整性,由此,数据的认证安全和完整性高于数据的私密安全,也就是说数据发送者的不确定性以及数据的完整性得不到保证的话,数据的私密性当无从谈起! 1. 禁止系统响应任何从外部/内部来的ping请求攻击者一般首先通过ping命令检测此主机或者IP是否处于活动状态

linux下常用的日志分析命令

linux下常用的日志分析命令 本文介绍下,在linux中常用的一些分析日志的命令行或脚本,有需要的朋友参考下. 形如下面这样的access.log日志内容: 211.123.23.133 – - [10/Dec/2010:09:31:17 +0800] “GET /query/trendxml/district/todayreturn/month/2009-12-14/2010-12-09/haizhu_tianhe.xml HTTP/1.1″ 200 1933 “-” “Mozilla/5.

Linux下常用SVN命令

1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain  --username qinxiaohui 简写:svn co 2.往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) svn add *.php(添加当前目录下所有的php文件) 3.将改动的文件提交到版本库 svn commit -m "L

二十七、Linux下常用的shell命令记录

本文章记录我在linux系统下常用或有用的系统级命令,包括软硬件查看.修改命令,有CPU.内存.硬盘.网络.系统管理等命令.但本文不打算介绍生僻命令,也不介绍各个linux发行版下的特有命令,且以后会持续更新. 说明,我是在一个Centos 6.4 64位的虚拟机系统进行测试.本文介绍的命令都会在此Centos下运行验证(也有部分命令会在我的suse/ubuntu系统里测试的,会做特明说明),但运行结果就不再列出了. 硬件篇 CPU相关 lscpu #查看的是cpu的统计信息. cat /pro

linux下常用的文本转换命令1(tr)

Linux下常用的文本转换和处理命令 tr命令 tr:替换.压缩或删除字符 格式:tr [OPTION]... SET1 [SET2] 选项: -c complement 使用字符集2替换字符集1中没有包含的字符(默认换行符也算在内) -d delete 删除字符集1中的所有字符,不进行转换 -s squeeze-repeats 把字符集1中的重复的字符压缩成一个 -t --truncate-set1 将字符集1中对应的字符用字符集2替换 (一般默认) 例子: -c 替换:  # echo "a

20145239 Linux下常用的ls命令总结

20145239 Linux下常用的ls命令总结 通过学习本周的教学视频和要求掌握的内容,发现ls命令被使用的次数非常多,但作为一个初学者,可能我只会ls或者顶多ls -l两种用法.但其实ls是一个非常实用的指令,因此我想简单的总结一下ls的常用命令. ls,英文全名:list 即列表的意思. 常用命令(以本周的10io文件夹为例): 1. ls -a 列出文件下所有的文件,包括以"."开头的隐藏文件(linux下文件隐藏文件是以.开头的,如果存在..代表存在着父目录). 2. ls

Linux 下常用解压命令(转载)

Linux下常用文件解压(包括rpm.deb包) Linux下怎么解后缀名是gzip的文件?1.以.a为扩展名的文件:#tar xv file.a2.以.z为扩展名的文件:#uncompress file.Z3.以.gz为扩展名的文件:#gunzip file.gz4.以.bz2为扩展名的文件:#bunzip2 file.bz25.以.tar.Z为扩展名的文件:#tar xvZf file.tar.Z或 #compress -dc file.tar.Z | tar xvf -linux下怎么解后