systemtap是一個linux下的系統調用和跟蹤程式,如果您在windows下用過filemon或者processmonitor的話就明白了.systemtap功能比processmonitor更強大一些,定製性更高些.但是顯然,和大多數linux程式一樣,也更難用!
為了裝這個systemtap,翻了好多貼子,最簡單的方法如下:
- 運行命令:sudo apt-get install linux-image-debug-`uname -r`
- 運行命令: sudo ln -s vmlinux-debug-`uname -r` vmlinux-`uname -r`
- 運行命令:sudo apt-get install systemtap
如此,就裝好了,可以構造一個簡單的指令檔a.stp,如下:
probe syscall.open
{
printf ("%s(%d) open (%s)\n", execname(), pid(), argstr)
}
然後用命令運行:sudo stap ./a.stp 如果順利的話,就可以看到輸出了.不過我這裡運行到pass5的時候報錯:/usr/lib/systemtap/stapio terminated,正在尋找原因中.
如果不習慣使用這麼高定製性的工具的話,可以改用strace,用法簡單:strace -f -o out_trace.txt /opt/eclipse/eclipse 我這裡是用來跟蹤eclipse運行時候的檔案讀寫記錄.
參考文獻:
- http://blog.chinaunix.net/u/12679/showart_529575.html (注:這個方法不好用,我在xubuntu下介面出問題,而且stap無法運行)
- https://bugs.launchpad.net/ubuntu/+source/systemtap/+bug/106957
- http://sourceware.org/systemtap/tutorial/node5.html 有關systemtap指令碼的編寫
- http://www.ibm.com/developerworks/cn/linux/l-systemtap/ 使用Systemtap調試核心
- http://www.xxlinux.com/linux/article/development/soft/20051125/67.html 使用truss,strace,ltrace跟蹤