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:
- 加載usbmon子產品
- sudo mount -t debugfs none /sys/kernel/debug #這一步一般不用做,debugfs預設都是挂載的
-
sudo modprobe usbmon
若加載成功,則 sudo ls /sys/kernel/debug/usb,可以看到usbmon檔案夾。
- 添加udev規則,使得wireshark可以捕獲到usb接口資料
- addgroup usbmon
- gpasswd -a $USER usbmon
-
sudo vi /etc/udev/rules.d/99-usbmon.rules
#加入下面一行,儲存退出
- SUBSYSTEM==“usbmon”, GROUP=“usbmon”, MODE="640“
-
lsusb檢視usb裝置在哪條總線上
Bus 003: 裝置在第3條總線上Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
-
運作wireshark,注意要在root使用者下,否則看不到usbmon
sudo wireshark
運作時可能會報權限之類的錯誤,直接跳過,選取後直接點選Start即可
以上步驟都配置過後,下次打開隻需要一下步驟即可:
- sudo modprobe usbmon —>加usbmon
- lsusb —> 檢視裝置在那根總線上
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:
參考:https://www.cnblogs.com/zengkefu/p/5642991.html
工具安裝:https://blog.csdn.net/fengjingge/article/details/41727265