shell之调试&分析

gdb调试

语句含义
gcc -g编译源码确保含有-g的参数
gdb ./app启动gdb并开始调试程序app
(gdb)set args x1 y1设置app运行的参数(./app x1 y1)
(gdb) r开始运行程序(run的简写)
(gdb) l列举调试的源码(list的简写)
(gdb) b 16在代码16行设置断点
(gdb)b main.cpp:12在main.cpp文件的12行设置断点
(gdb)b onRecv在onRecv函数设置断点
(gdb)info break查看所有的断点
(gdb)info break 3查看第3个断点
(gdb)n单行执行,有函数不会进入函数(next简写)
(gdb)s单步执行,有函数会跳入函数(step简写)
(gdb)finish退出函数
(gdb)c继续运行(continue简写)
(gdb)q退出调试(quit简写)
(gdb)p aint a = add(1,2);

如果在上述代码附近设置断点后,查看a的值(print的简写)

tcpdump

  • tcpdump -n -i eth0 host 192.168.31.147 and 114.114.114.114
    截取本机192.168.31.147和主机114.114.114.114之间的通信数据
  • tcpdump -n -i eth0 dst 192.168.31.147
  • tcpdump -n -i eth0 dst 192.168.31.147 or 192.168.31.157
    截取所有进入本机的数据(或多个IP)
  • tcpdump -n -i eth0 dst 192.168.31.147 or 192.168.31.157 and tcp
    抓取进入本机的所有tcp数据包
  • tcpdump -n -i eth0 src 192.168.31.147 or 192.168.31.157
  • tcpdump -n -i eth0 src 192.168.31.147 and port ! 22 and tcp
    抓取从本机发出的数据包(and or进行条件筛选端口)
  • tcpdump host 192.168.1.142
    截获主机所有的收发的数据

strace

  • strace –o log.txt app
    执行app程序,并将其涉及的所有系统调用输出到log.txt中
  • strace –o log.txt –p pid
    查看指定进程号的程序对应的系统调用的过程

valgrind

  • 安装valgrind
    Yum install valgrind
  • 生成内存泄露信息
    valgrind –tool=memcheck –leak-check=yes –log-file=mem.txt ./app
  • definitely lost
    肯定泄露部分
  • possibly lost
    可能泄露部分
  • indirectly lost
    间接泄露
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值