WEB开发网
开发学院操作系统Linux/Unix Probevue - AIX 6 新的程序员工具 阅读

Probevue - AIX 6 新的程序员工具

 2008-09-06 08:21:57 来源:WEB开发网   
核心提示: 第二个示例包含从函数返回的代码#!/usr/bin/probevue@@BEGIN{int read(int fd, void *buf, int n); <-- Declare function so ProbeVue understands itint bad;int good;

第二个示例包含从函数返回的代码

#!/usr/bin/probevue
@@BEGIN
{
int read(int fd, void *buf, int n);    <-- Declare function so ProbeVue understands it
int bad;
int good;
}
@@syscall:*:read:exit
when(__rv == -1)             <-- __rv means the return value
{
  bad++;
}
@@syscall:*:read:exit
when(__rv != -1)
{
  good++;
}
@@interval:*:clock:1000         <-- Once a second output counter
{
  printf("Reads good=%d bad=%dn",good,bad);
  good=0;
}

以下是上面脚本的一些示例输出,我专门运行了一个程序来生成一些磁盘 I/O。注意:当程序尝试从无效的文件描述符(即未使用 open() 函数初始化文件描述符)进行读取时,将生成不良 I/O:# ./goodandbad.e
Reads good=0 bad=0
Reads good=55 bad=0
Reads good=0 bad=0
Reads good=0 bad=0
Reads good=57 bad=1
Reads good=0 bad=1
Reads good=0 bad=1
Reads good=55 bad=1
Reads good=0 bad=1
Reads good=1 bad=1
Reads good=55 bad=1
Reads good=40 bad=1
Reads good=1 bad=2
Reads good=55 bad=3
Reads good=1 bad=3
Reads good=0 bad=3
Reads good=56 bad=4

第三个示例监视用户程序

我使用一个小程序生成了很多 CUP 工作。此程序调用了 ncpu,其中包含函数“engine()”,此函数耗尽了 CPU 上的 CPU 时钟周期。以下脚本用于研究此函数的使用情况。注意:此程序已经编译并在运行,并且它包括符号表,probevue 使用此符号表来查找函数入口和出口点(即未剥离)。probevue 脚本包括用于输出所能找到的程序和环境的详细信息的 probevue 函数:#!/usr/bin/probevue
double engine(int p1, int p2);
@@uft:$1:*:engine:entry
{
   printf("PID=%d TID=%d PPID=%d PGID=%d UID=%d GID=%d InKernel=%dn", __pid,
   __tid, __ppid, __pgid, __uid, __euid, __kernelmode);
   printf("ProgName=%s errno=%dn", __pname, __errno);
    printf("---n");
   stktrace(GET_USER_TRACE,-1);
   printf("+++n");
   stktrace(PRINT_SYMBOLS|GET_USER_TRACE,-1);
}

上一页  1 2 3 4 5  下一页

Tags:Probevue AIX 程序员

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接