我看了一下,已经没法改了。。。。
比较脚本程序
#!/bin/ksh
# Correlate ps.before and ps.after data
# command output from ps vg
ONE_FILE=temp_ps_vg
print_help() {
print "Usage: post_vg.sh [single_file|before_ps after_ps]"
print " Post process ps vg output "
print " where, "
print " single_file contains a before and after snapshot"
print " No files specified - assume"
print " ==> ps_vg_before "
print " ==> ps_vg_after "
exit -1
}
main() {
if [[ $1 == "-?" ]]
then
print_help
exit -1
fi
if [[ $# == 2 ]]
then
cat $1 $2 > $ONE_FILE
elif [[ $# == 1 ]]
then
cat $1 > $ONE_FILE
else
cat ps_vg_before ps_vg_after > $ONE_FILE
fi
post_vg
rm $ONE_FILE
}
post_vg() {
cat $ONE_FILE | awk 'BEGIN {
list_label = "None"
} /PID/ {
if( list_label == "None" )
list_label = "Before"
else
list_label = "After"
next
}
{
pid_list[$1]
pid_size[$1, list_label ] = $6
}
END {
printf("pid \tBefore Size \tAfter Size \t Delta \n")
printf("-------\t-----------\t----------\t----------\n")
for( pid in pid_list ) {
if((pid,"Before") in pid_size && (pid,"After") in pid_size ) {
delta = pid_size[pid, "After"] - pid_size[pid, "Before"]
d_total += delta
printf("%s\t%11d\t%10d\t%10d\n", \
pid, \
pid_size[pid, "Before"], \
pid_size[pid, "After"], \
delta)
}
}
printf("*** Total Delta %d\n", d_total)
}'
}
内存泄漏模拟程序
#include <stdio.h>
#include <malloc.h>
#define MAXPTR 1024
#define MEG 1024*1024
int main(int argc, char *argv[])
{
char *buf[MAXPTR];
char *buf1;
char c;
unsigned long memmax;
unsigned long step;
unsigned long i,j,k;
if(argc != 3) {
printf("USAGE: %s <Max Memory(meg)> <stepi(meg)> \n", argv[0]);
exit(-1);
}
for(i=0;i!=MAXPTR;i++)
buf=NULL;
i=j=k=0;
memmax=(atoi(argv[1])*MEG);
step =(atoi(argv[2])*MEG);
printf("Running Memhog with maxmem = %u Step = %u\n", memmax, step);
sleep(5);
for(i=step;i < memmax; i+=step,k++) {
if((buf[k]=(char*)malloc(step)) == NULL) {
perror("ERROR in malloc");
exit(-1);
}
buf1=buf[k];
printf("Mallocing and Writing %u bytes\n", i);
for(j=0;j<step;j+=30) {
strcpy(buf1+j, "The Camp Town Ladies......");
printf(".");
}
printf("\nMalloced and Wrote %u bytes\n", i);
c=getchar();
}
for(i=0;buf!=NULL;i++){
free((char*)buf);
}
exit(0);
} |