You know the situation. The program is prepared for debugging and in all debugging sessions it runs well. But once it is started without debugging the error shows up. A typical example is a memory leak that becomes visible only when we turn off the debugging. If you foresee such situations you can still win. Simply use something equivalent to the following little program:
#include <mcheck.h>
#include <signal.h>
static void
enable (int sig)
{
  mtrace ();
  signal (SIGUSR1, enable);
}
static void
disable (int sig)
{
  muntrace ();
  signal (SIGUSR2, disable);
}
int
main (int argc, char *argv[])
{
  ...
  signal (SIGUSR1, enable);
  signal (SIGUSR2, disable);
  ...
}
I.e., the user can start the memory debugger any time s/he wants if the
program was started with MALLOC_TRACE set in the environment.
The output will of course not show the allocations which happened before
the first signal but if there is a memory leak this will show up
nevertheless.
Go to the first, previous, next, last section, table of contents.