Performance and Debugging Tools
Platform (In)Dependence
Most of these tools are only available on a single platform. However, please do not feel constrained to only use the tools on the platform you are targeting. Since many machines have a similar architecture, i.e. cache-based, RISC, microprocessors, where the performance is strongly dependent on the cache utilization, you will no doubt find that code improvements made on one architecture result in performance gains on other architectures as well. Similarly when debugging, it is usually the case that a bug is a bug. You can find it on one machine so that it will be fixed for all machines.
Time Expectations
New tools are great! They enable you to do new things and make you more efficient. But what's the learning curve? How much time do I need to invest before this tool makes my life better? For the debuggers the answer is - immediately. These are all simple to use and fairly self-explanatory. You should immediately be able to run code, set breakpoints, query variables, etc. Obviously, the more you use, them the more tricks and treats you'll find. For the performance tools, the answer is a bit tougher. If you are already familiar with performance issues then you will be able to use the tools with very little startup time. However, if you are new to performance tuning then you will need to invest some time in going through the tutorials and studying performance issues online.
Common Features of all Debuggers
Debuggers are useful for finding problems in your code. They allow you to view your source, run your code, control code execution, set breakpoints, query variables, examine core files, and many, many other functions as well. It is usually much more efficient (and simpler!) to use a debugger rather than sticking a bunch of print statements in your code. While there are a lot of debuggers available (see list below) once you learn how to use one it is easy to switch to another since the basic functionality provided is the same. It's much like driving a new car. You may not know where to turn on the lights or the windshield wipers when you first step in, but you know it's there somewhere. Still, the Rolls Royce of debuggers is the totalview debugger from Etnus. It provides the richest set of functions, is simple to use and is clearly superior for debugging parallel code. Thus, it is our recommendation for compiler of choice. However, any of the compilers below will prove useful to you in a pinch. Here are some common things to keep in mind when using any of these debuggers.
1. Compile your code with the “-g” option. This gives the debugger access to the symbol table information and allows you to see your source.
2. Optimizations may move code segments around. You can debug optimized code but if you are confused in stepping through the code, you may want to turn off all optimizations.
3. Typically you run the debugger from the directory where your source and executable are. Optionally you may have your source in a different directory but you will then need to tell the debugger where it is.
4. Start it up, in general:
debugger_name my_executable
For example:
totalview a.out
dbx, gdb, pdbx
These are mostly command line debuggers (i.e. no nice GUI or data displays). They provide all of the standard debugging functionality such as controlling program execution, monitoring memory locations, and tracing problems. dbx (and variants) is the BSD unix debugger, gdb is the GNU debugger, and pdbx is a parallel version of dbx from IBM.
|
Debugger |
Machine Name |
|
dbx |
|
|
gdb |
|
|
pdbx |
For more information, use manuals at:
man dbx
man gdb
man pdbx
pgdbg, idb, fx(xfx)
These are the debuggers from each of the compiler vendors installed on the Linux cluster.
|
Machine Name: |
We make no gurantees that that code compiled with one vendor's compiler can be analyzed with another vendor's debugger.
|
Vendor |
Debugger |
Package |
|
Portland Group |
pgdbg |
pgi |
|
Intel |
idb |
intel_fortran, intel_CC |
|
Absoft |
fx (xfx for the gui version) |
profortran |
For more information, use manuals at:
man pgdbg
man idb
For more information about the fx debugger, run the GUI version of fx and then click on help.
totalview
Etnus TotalView is the most advanced debugger available on Linux and UNIX. It helps eliminate the frustration, delays, and pain inherent in developing complex applications, such as those that require massive amounts of data, have many lines of code or empty threads, and other forms of parallelism. It provides support for C/C++, compilers, and the platforms you use every day. TotalView also gives you memory tracking, support for Standard Template Libraries, and a host of other features absent in run-of-the-mill debuggers in order to help you find even the most elusive bugs fast. TotalView is for developers who require a premium tool, a debugger that really works.
|
Machine Name: |
SpeedShop
The SpeedShop tools allow you to run experiments and generate reports that determine the sources of performance problems and indicate areas in your code where application performance can be enhanced.
|
Machine Name: |
For more information, use manuals at:
man intro_ss
man speedshop
man prof
man cvperf
You can also see the "SpeedShop User's Guide". Search for it in the SGI Tech Pubs library using speedshop as the keyword.
Additional help


