Ich möchte in der Lage sein, einen Core-Dump zu generieren, aber den Prozess danach nicht beenden. Ich brauche es nicht, um weiterzumachen, stirb einfach nicht. Dies ist ein C++ - Ubuntu-Prozess.Ist es möglich, den Kern zu entladen, aber den Prozess nicht zu beenden?
Ich glaube, ich kippe den Kern auf eine ziemlich standardmäßige Weise: Ich fange das störende Signal über die Einstellung der Signal-Handler mit Signal(), ich setze die Kerngröße Grenze über setrlimit() und dann fordere ich den Core-Dump mit Signal() und erhöht():
signal(SIGSEGV, OnPosixSignal);
...
void OnPosixSignal(int iSignal)
{
struct rlimit CoreLimit;
CoreLimit.rlim_cur = RLIM_INFINITY;
CoreLimit.rlim_max = RLIM_INFINITY;
setrlimit(RLIMIT_CORE, &CoreLimit);
signal(iSignal, SIG_DFL);
raise(iSignal);
}
gibt es etwas, was ich tun kann, den Prozess nicht haben, Ausfahrt nach dem Kern Dumping?
Vielen Dank im Voraus!
Haben Sie sich einmal angesehen, wie 'gcore' das macht? –
Ich habe 'setrlimit() 'nicht in der Liste der async-sicheren Funktionen gefunden. Sind Sie sicher, dass es eine gute Idee ist, sie in einem Signal-Handler aufzurufen? – EOF
'Coredumper' Bibliothek wird dein Freund sein. –