systemtap跟踪C

 

1.[root@localhost ~]# rpm -qi  glibc
Name        : glibc                        Relocations: (not relocatable)
Version     : 2.5                               Vendor: CentOS
Release     : 123.el5_11.1                  Build Date: Tue 27 Jan 2015 09:35:22 AM PST
Install Date: Tue 30 Jun 2015 01:41:40 AM PDT      Build Host: builder17.centos.org
Group       : System Environment/Libraries   Source RPM: glibc-2.5-123.el5_11.1.src.rpm
Size        : 11690192                         License: LGPL
Signature   : DSA/SHA1, Tue 27 Jan 2015 02:58:46 PM PST, Key ID a8a447dce8562897
Summary     : The GNU libc libraries.

2.安装glibc调试符号表

     1.wget -c ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/x86_64/Debuginfo/glibc-debuginfo-2.5.123.el5_11.1.x86_64.rpm

      (手动下载              ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/x86_64/Debuginfo/glibc-debuginfo-2.5.123.el5_11.1.x86_64.rpm)

    2. rpm -i  glibc-debuginfo-2.5.123.el5_11.1.x86_64.rpm

 

3.测试是否安装成功

1.[root@localhost ~]# stap -L  'process("/lib64/libc.so.6").function("malloc")'
   process("/lib64/libc-2.5.so").function("__libc_malloc@/usr/src/debug/glibc-2.5-20061008T1257/malloc/malloc.c:3560") $bytes:size_t
  You have new mail in /var/spool/mail/root

2.  测试的C文件

vi  t.c

#include <stdlib.h>

void fun() { malloc(1000);}

int main(int argc, char *argv[])

{   fun();  return 0;}

gcc -g t.c -o t

3.查看t 程序调用了那些函数(不包括malloc)

[root@localhost ~]# stap -L 'process("./t").function("*")'
process("/root/t").function("fun@/root/t.c:3")
process("/root/t").function("main@/root/t.c:7") $argc:int $argv:char**

4.

 

posted @ 2015-09-10 17:13  zengkefu  阅读(259)  评论(0编辑  收藏  举报