GNU/Linux >> Znalost Linux >  >> Linux

Jak programově způsobit výpis jádra v C/C++

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.


Linux
  1. Jak nainstalovat Dotnet Core na Centos 7?

  2. Jak programově vytvářet videa?

  3. Jak programově získat velikost stránky mezipaměti CPU v C++?

  1. (C/C++) Jak vygenerovat spustitelný soubor, který lze spustit na Windows i Linuxu?

  2. Zapněte výpisy jádra/selhání programově

  3. Jak získat uživatelské jméno v C/C++ v Linuxu?

  1. Jak nainstalovat a nastavit Nagios Core na Raspberry PI

  2. Jak určit kódování znaků, které terminál používá v programu C/c++?

  3. Jak zobrazit soubor Core (obecně)