微调内核参数
- 最大文件描述符数量。
- epoll最大数量。
GDB调试
- gcc或g++编译时,需要加上-g选项,产生必要的调试信息。
- 开始调试:gdb a.out
- 设置断点:(gdb) break(b) main.c 12 — 在main.c的12行设置断点。
- 删除断点:查看断点的编号后,delete 编号,就可以删除了。
- 禁用断点:disable。
- 执行: run(简写r),后面可以添加运行参数
- 继续:continue©
- next(n):执行下一行。step(s):进入函数内部。until(u)直接运行完循环体。
- 打印变量: print§ xxx, xxx为变量名。display xxx,是在每次断点暂停都会打印这个变量。
- 修改变量:也是使用print, print a=10。
- 显示程序代码: list(简写 l)
- 终止:quit
- info可以查看参数、局部变量、内存位置、断电信息、线程信息、寄存器信息等。
- 还有一些操作:比如单独调试子进程,单独调试某个线程,显示调用栈,临时修改环境变量,watch命令监控某个变量的变化,处理信号。
tcpdump
- 抓包工具。
- 可以指定协议,比如指定icmp。$ tcpdump icmp
- 可以指定端口,指定发送端或目标端口。$ tcpdump dst port 13579
- 可以指定ip地址,或者范围地址(ip/掩码)。
- 还可以直接使用数据包中的部分协议字段来过滤。
lsof
- 显示linux打开的所有文件描述符,-i 选项是显示socket文件描述符。
strace
- 统计系统调用,可以统计系统调用执行的时间,次数,出错等。
netstat
- 强大的网路信息统计命令,可以打印网卡上的连接,路由表信息,网卡接口信息。主要是查看网络连接。
vmstat
- 实时输出系统的各种资源的使用情况,比如内存使用,CPU使用,进程信息,I/O使用情况等。