天天看点

工作Ubuntu中使用工具记录

bushound:

LINUX下bushond挂载:

2)的USB抓包工具:usb_mon

  • 其实,Ubuntu下已经内置了USB抓包工具—USB_MON

【其实 make menuconfig 时候会让我们选择的】

使用方法如下:

# mount -t debugfs none /sys/kernel/debug //这就输入会直接回报 usb busy,可以不输入这句,直接输入下一句

# modprobe usbmon

查看当前的USB device:

# cat /sys/kernel/debug/usb/devices

#使用此命令也可 lsusb

输入命令后如下:

T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 4 Spd=480 MxCh= 0

D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=1fc9 ProdID=0908 Rev=10.00 //可以看见VID 0x1fc9 PID 0x0908

S: Manufacturer=Sumarte Technology

S: Product=Vehicle Bus Adapter

C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA

I:* If#= 0 Alt= 0 #EPs= 6 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)

E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms

E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms

E: Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

E: Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms

通过BUS=01 查看Bus01上的全部USB数据包

#cat /sys/kernel/debug/usb/usbmon/1u

监听全部

#cat /sys/kernel/debug/usb/usbmon/0u

wireshark跟usb_mon:

  1. 加载usbmon模块
  • sudo mount -t debugfs none /sys/kernel/debug #这一步一般不用做,debugfs默认都是挂载的
  • sudo modprobe usbmon

    若加载成功,则 sudo ls /sys/kernel/debug/usb,可以看到usbmon文件夹。

  1. 添加udev规则,使得wireshark可以捕获到usb接口数据
  • addgroup usbmon
  • gpasswd -a $USER usbmon
  • sudo vi /etc/udev/rules.d/99-usbmon.rules

    #加入下面一行,保存退出

  • SUBSYSTEM==“usbmon”, GROUP=“usbmon”, MODE="640“
  1. lsusb查看usb设备在哪条总线上

    Bus 003: 设备在第3条总线上Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

  2. 运行wireshark,注意要在root用户下,否则看不到usbmon

    sudo wireshark

    运行时可能会报权限之类的错误,直接跳过,选取后直接点击Start即可

以上步骤都配置过后,下次打开只需要一下步骤即可:
  1. sudo modprobe usbmon —>加usbmon
  2. lsusb —> 查看设备在那根总线上
  3. sudo wireshark —>打开wireshark

    如果wireshark打开后不能看见对应总线,用 cat /sys/kernel/debug/usb/usbmon/1u 查看下总线是否能打开。

Xshell ubuntu安装过程:

sudo apt-get install openssh-server //安装ssh服务器

sudo apt-get install ssh //安装ssh

以下针对14.04

sudo ps -e |grep ssh //查看ssh是否启动

sudo service ssh start //启动SSH服务

重启ssh服务/etc/init.d/ssh restart。

valgrind

valgrind工具安装步骤:

(1)wget http://www.valgrind.org/downloads/valgrind-3.11.0.tar.bz2 下载安装包

  valgrind在版本上很傲娇,最好下载最新的版本,否则会出现很多莫名其妙的问题。

(2)bzip2 -d valgrind-3.11.0.tar.bz2

(3)tar xvf valgrind-3.11.0.tar

cd valgrind-3.11.0

(4)使用超级用户执行以下命令:

  sudo ./configure

  sudo make

  sudo make install

(5)配置环境变量

  切换到cd /etc/profile.d目录下,使用超级用户创建文件valgrind.sh

  里面添加如下内容

  #!/bin/sh

  VALGRIND_ROOT=/home/Lyndon/valgrind-3.11.0

  VALGRIND_INCLUDE=/usr/local/include/valgrind

  VALGRIND_LIB=/usr/local/lib/valgrind

  export VALGRIND_ROOT VALGRIND_INCLUDE VALGRIND_LIB

  

(6)修改valgrind.sh的权限 sudo chmod +x valgrind.sh,执行./valgrind.sh

使用:

valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./a.out

使用valgrind的callgrind工具进行多线程性能分析:

valgrind是开源的性能分析利器。 根据它的文档,可以用它来检查内存泄漏等问题,还可以用来生成函数的调用图,就这两个功能就足够有吸引力了。

本文主要是介绍如何使用valgrind的callgrind工具进行性能分析。

分析过程

使用callgrind工具生成性能分析数据

命令格式如下:

valgrind --tool=callgrind ./exproxy

其中 ./exproxy就是我们要分析的程序。执行完毕后,就会在当前目录下生成一个文件。文件名为“callgrind.out.进程号”。如,callgrind.out.31113。注意,对于daemon进程的调试,不要通过kill -9方式停止。

如果你调试的程序是多线程,你也可以在命令行中加一个参数 -separate-threads=yes。这样就会为每个线程单独生成一个性能分析文件。如下:

valgrind --tool=callgrind --separate-threads=yes ./exproxy

生成的文件除了callgrind.out.31113外,还会多出一些子线程的文件。文件名如下:

callgrind.out.31113-01 callgrind.out.31113-02 callgrind.out.31113-03

把callgrind生成的性能数据转换成dot格式数据

可以使用gprof2dot.py脚本,把callgrind生成的性能分析数据转换成dot格式的数据。方便使用dot把分析数据图形化。

脚本可以 点此下载 。脚本使用方式如下:

python gprof2dot.py -f callgrind -n10 -s callgrind.out.31113 > valgrind.dot

使用dot把数据生成图片

命令格式如下:

dot -Tpng valgrind.dot -o valgrind.png

使用dot把数据生成图片

dot工具安装:

sudo apt-get install xdot

命令格式如下:

dot -Tpng valgrind.dot -o valgrind.png

打开valgrind.png:

工作Ubuntu中使用工具记录

参考:https://www.cnblogs.com/zengkefu/p/5642991.html

工具安装:https://blog.csdn.net/fengjingge/article/details/41727265