[Develope]/C++

gprof doesn't produce output

하늘을닮은호수M 2011. 2. 7. 17:21
반응형

gprof doesn't produce output

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 file, and why won't gprofcompute the profile? 

Agmon.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:

  • 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 arguments22.
  • 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 yourmain 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.

간만에 프로세스의 성능을 개선해야 할 일이 생겨 gprof을 쓰려고 하니 gmon.out이 생성이 안 되었다. 하루 종일 이리저리 해봐도 안 되었는데... 아주 단순한 문제였다.
linking 시점에도 -pg옵션을 넣으라는... ㅠㅠ

이제 개발도 접어야 하나? 노화가 시작되었다. 
반응형