[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gprof for shared libraries.
From: |
Chanaka Nanayakkara |
Subject: |
gprof for shared libraries. |
Date: |
Thu, 4 Jan 2007 00:26:21 -0800 |
i'm using soalaris 9 and g++ compiler.
I'm trying to get gprof information about a shared library.
So I wrote a small library like this,
*comp.cpp*
#include<iostream>
#include<string>
#include"comp.h"
using namespace std;
void detailsG(int age, string str)
{
cout << "lib 1 ******************" << endl;
int a = age;
string s = str;
cout <<"your name is "<< s;
cout <<" and your age is " << a << "."<< endl;
sayHelloG();
cout <<"comp.cpp detailsG"<<endl;
cout << "lib 1 ******************" << endl;
}
void sayHelloG()
{
cout << "lib 1 ******************" << endl;
cout << "Hello dear.." <<endl;
cout << "comp.cpp sayHelloG" << endl;
cout << "lib 1 ******************" << endl;
}
*comp.h*
#include<string.h>
#include<string>
using namespace std;
extern "C" {
void detailsG(int, string);
void sayHelloG();
}
Then I build the library like this,
g++ -pg -fPIC -I. -c comp.cpp
g++ -shared -pg -o libmitTest.so comp.o
Then I wrote a little program which uses that library.
#include "comp.h"
#include <iostream>
using namespace std;
int main () {
cout << "IN MAIN" << endl;
sayHelloG();
detailsG(22, "Gavinda");
cout << "AGAIN IN MAIN" << endl;
return 0;
}
I compiled it like this,
g++ -pg -L /export/home/chanaka/first/lib -lmitTest z.cpp -o z.out
export LD_PROFILE=libmitTest.so:z.out
after I run z.out file I got gmon.out file but its gprof output don't show
details about shared library functions. But I want to get details about
shared library functions. Could anyone please tell me the way to get details
about shaed library functions.
gprof -b z.out gmon.out produced a output like this,
bash-2.05$ gprof -b z.out gmon.out
granularity: each sample hit covers 4 byte(s) no time propagated
called/total parents
index %time self descendents called+self name index
called/total children
0.00 0.00 1/1 _start [19]
[2] 0.0 0.00 0.00 1 main [2]
0.00 0.00 2/2 <external> [1]
-----------------------------------------------
0.00 0.00 1/2 _GLOBAL__I_main [10]
0.00 0.00 1/2 _GLOBAL__D_main [9]
[8] 0.0 0.00 0.00 2
_Z41__static_initialization_and_destruction_0ii
[8]
-----------------------------------------------
0.00 0.00 1/1 __do_global_dtors_aux
[13]
[9] 0.0 0.00 0.00 1 _GLOBAL__D_main [9]
0.00 0.00 1/2
_Z41__static_initialization_and_destruction_0ii
[8]
-----------------------------------------------
0.00 0.00 1/1 __do_global_ctors_aux
[12]
[10] 0.0 0.00 0.00 1 _GLOBAL__I_main [10]
0.00 0.00 1/2
_Z41__static_initialization_and_destruction_0ii
[8]
-----------------------------------------------
granularity: each sample hit covers 4 byte(s) no time accumulated
% cumulative self self total
time seconds seconds calls ms/call ms/call name
0.0 0.00 0.00 2 0.00 0.00
_Z41__static_initialization_and_destruction_0ii
[8]
0.0 0.00 0.00 1 0.00 0.00 _GLOBAL__D_main [9]
0.0 0.00 0.00 1 0.00 0.00 _GLOBAL__I_main [10]
0.0 0.00 0.00 1 0.00 0.00 main [2]
Index by function name
[9] _GLOBAL__D_main [8] _Z41__static_initia
[10] _GLOBAL__I_main [2] main
Object modules
1: z.out
bash-2.05$
in this output the line *"0.00 0.00 2/2 <external>
[1]"* shows details about shared library functions. But I want to get
individual details about each shared library function. what did i do wrong
here? or what is the correct way to get details about shared libraries?
Thanks for spending your valuable time for me.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gprof for shared libraries.,
Chanaka Nanayakkara <=