实验三 (提高2) Systemtap 调试内核
姓名:刘志红 学号:SA11226351 实验os为Ubuntu10.10 参考链接
http://sourceware.org/systemtap/
http://blog.csdn.net/lzuzhp06/article/details/6933525
http://www.ibm.com/developerworks/cn/linux/l-systemtap/#scripting
安装systemtap
sudo apt-get install systemtap
sudo stap -ve 'probe begin { log(\
下载 debug内核版本
先查看本系统的uname –r 内核版本
再下载,还是不行
查看http://sourceware.org/systemtap/wiki/SystemtapOnUbuntu
文章后 http://ddebs.ubuntu.com/pool/main/l/linux/ 找到了debug版内核 并手动下载下来 安装该内核 dpkg –i
或用命令 Wget
http://ddebs.ubuntu.com/pool/main/l/linux/linux-image-2.6.32-33-generic-dbgsym_2.6.32-33.72_i386.ddeb
擦 下了三个小时,下错版本了 重新下 Wget
http://ddebs.ubuntu.com/pool/main/l/linux/linux-image-2.6.32-33-generic-dbgsym_2.6.32-33.70_i386.ddeb
sudo dpkg -i linux-image-2.6.32-33-generic-dbgsym_2.6.32-33.70_i386.ddeb
1学会使用embedded-c.stp,查看进程的对应的应用程序
%{
#include
function task_execname_by_pid:string (pid:long) %{ struct task_struct *p; struct list_head *_p, *_n;
list_for_each_safe(_p, _n, ¤t->tasks) { p = list_entry(_p, struct task_struct, tasks); if (p->pid == (int)THIS->pid)
snprintf(THIS->__retvalue, MAXSTRINGLEN, \} %}
probe begin {
printf(\exit() }
2 打印所有运行的进程
%{
#include
#include
%}
function process_list ()
%{
struct task_struct *p;
struct list_head *_p,*_n;
for_each_process(p){
_stp_printf(\
}
%}
probe begin
{
process_list();
exit() }
3 监控所有系统调用 (test2.c)
global syscalllist
probe begin {
相关推荐: