Node:No profile,
Previous:IO bound programs,
Up:Profiling
gprof
doesn't produce outputQ: Every time I run the profiler it says "gmon.out: no such file or
directory" and no profile is produced. What is this gmon.out
file, and why won't gprof
compute the profile?
A: gmon.out
is the file with raw execution counts and timing
info that gprof
needs to produce the profile. The file is
written by the profiled program when it exits. If the file isn't
created, it might be because of one of the following reasons:
-pg
switch.
Note that both compilation and link need to be done with
-pg
, because the functions that actually write the results to
gmon.out
are only linked in when GCC sees -pg
on the link
command line.
ld.exe
directly to link your program and forgot
to mention the files and switches necessary for the profiled program
operation. You should use gcc
to link your program instead of
calling the linker directly; a -pg
switch to gcc
is all
that it takes to make sure that the linker will get all the necessary
arguments22.
gmon.out
is registered with the atexit
library function,
and won't be called if the program was terminated in an abnormal way.
Make sure that your program exits with a call to exit
library
function or with a return
statement in your main
function.
For example, if your program dies with an exception or a signal, you
need to install a handler for that signal and make it call exit
.