分类: LINUX
2010-03-23 15:09:53
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 arguments.
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
.