您的位置:首页 > 运维架构 > Shell

shell之调试&分析

2016-03-15 21:41 453 查看

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

间接泄露
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: