天天看點

工作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