11.4. Configure the Application for the Performance Hunt
The next step in the investigation is to set up the application for the performance hunt. Whereas with GIMP we recompiled the application immediately, we are going to take a different approach with nautilus. It may be hard to figure out exactly which pieces need to be recompiled because it relies on so many different shared libraries. Instead of recompiling, we are going to download and install the debugging information for each of the applications and libraries. For Fedora and Enterprise Linux, Red Hat provides a set of debuginfo rpms that contain all the symbol information and sources that were generated by the compiler when the application was complied. Each binary package or library has a corresponding debuginfo rpm that contains the debugging information. This allows Red Hat to ship the binaries without the disk-space–consuming debugging information. However, it allows developers, or those investigating performance problems, to download the appropriate debuginfo packages and use them. In this case, Red Hat's version of oprofile will also recognize the debuginfo packages and pick up the symbols when profiling both an application, such a nautilus, and a library, such as gtk. In this case, we are going to download the debuginfo for gtk, nautilus, glib, and the kernel. If oprofile finds a library that contributes a significant amount of cycles, but does not allow you to analyze the libraries (opreport prints out "no symbols"); this indicates that no debugging information is installed for the library. We can download and install the appropriate debuginfo package for the library, and then oprofile will have access to the debugging information and will then be able to map the events back to the original functions and source lines.