Před několika lety Google vydal knihovnu coredumper.
Přehled
Knihovnu coredumper lze zkompilovat do aplikací a vytvořit výpisy jádra běžícího programu – bez ukončení. Podporuje jednovláknové i vícevláknové výpisy jádra, i když jádro nativně nepodporuje vícevláknové základní soubory.
Coredumper je distribuován za podmínek licence BSD.
Příklad
Toto v žádném případě není úplný příklad; jednoduše vám to dává pocit, jak vypadá rozhraní API pro coredumper.
#include <google/coredumper.h> ... WriteCoreDump('core.myprogram'); /* Keep going, we generated a core file, * but we didn't crash. */
Není to to, co jste požadovali, ale možná je to ještě lepší :)
Vyvolání signálu číslo 6 (SIGABRT
v Linuxu) je jedním ze způsobů, jak to udělat (i když mějte na paměti, že SIGABRT není vyžadován být 6 ve všech implementacích POSIX, takže možná budete chtít použít SIGABRT
hodnota sama, pokud se jedná o něco jiného než quick'n'dirty ladicí kód).
#include <signal.h>
: : :
raise (SIGABRT);
Volání abort()
způsobí také výpis jádra a můžete to udělat dokonce bez ukončíte proces voláním fork()
následuje abort()
pouze v dítěti – podrobnosti naleznete v této odpovědi.