The coredumper library can be compiled into applications to create core dumps of the running program — without terminating. It supports both single- and multi-threaded core dumps, even if the kernel does not natively support multi-threaded core files.
Coredumper is distributed under the terms of the BSD License.
What it is :
“A neat tool for creating GDB-readable coredumps from multithreaded applications — while the program is running.”
Excerpt from the header :
/
* Returns a file handle that can be read to obtain a snapshot of the
* current state of this process. If a core file could not be
* generated for any reason, -1 is returned and “errno” will be set
* appropriately. **
* This function momentarily suspends all threads, while creating a
* COW (copy-on-write) copy of the process’s address space.
* This function is neither reentrant nor async signal safe. Callers
* should wrap a mutex around the invocation of this function, if
* necessary. **
* The current implementation tries very hard to behave reasonably when * called from a signal handler, but no guarantees are made that this will * always work. Most importantly, it is the caller’s responsibility to
* make sure that there are never more than one instance of
* GetCoreDump() or WriteCoreDump() executing concurrently. **
*
/

Click here for the code.google.com website
Download CoreDumper : get it here
CoreDumper header : click here
Current Google Open Source projects : click here
Product release date : 20|05|°05 – All info from Google’s pages.