| Previous | Up | Top |
Q: 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 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 one of the following reasons:
- You didn't compile and/or link your program with the -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.
- You have called 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
arguments(Note: If you absolutely need to call ld.exe directly, invoke gcc once with a -v switch and you will see what are the arguments that you
should pass to the linker in your case.).
- Your program exited abnormally. The function which generates 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, install a signal handler and make it call exit.

You can help support this site by
visiting the advertisers that sponsor it! (only once each, though)