
이 질문은 일반적으로 Unix/Linux에 속할 수 있지만 대답은 distro 또는 데스크탑 환경에 따라 달라질 것 같습니다. [저는 KDE 및 Xfce를 사용하므로 부스에 적용 가능한 답변을 원합니다].
다음의 간단한 GTK 앱을 고려해 보세요.
#include <gtk/gtk.h>
static void print_hello(GtkWidget *widget, gpointer data)
{
g_print ("Hello World\n");
// Intentional crash
int* badfood=NULL;
*badfood=1;
}
int main(int argc,char *argv[])
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_show (window);
GtkWidget* button = gtk_button_new_with_label ("Crash this app");
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show (button);
gtk_main ();
return 0;
}
사용자가 "이 앱 충돌"을 클릭하면 프로그램이 SIGSEGV와 충돌합니다. 터미널에서 실행하면 다음과 같은 알림이 표시됩니다.
$ ~/Skrivbord/gtktest/test
Hello World
Segmenteringsfel (minnesutskrift skapad)
그리고 기쁘지만 런치박스를 통해 시작하는데...
프로그램 충돌에 대한 눈에 띄는 알림 없이 창만 사라집니다. 후자의 경우 다음과 같은 메시지가 나타나기를 원합니다.
~/Skrivbord/gtktest/test
분할 오류가 발생했습니다.
내가 Windows에서 얻는 것과 매우 흡사합니다.
답변1
읽으면서 man 5 core
프로그램이 충돌할 때 어떤 일이 일어나는지 발견했습니다. 설정 을 통해 그 이외 core_pattern
의 다른 것을 시작할 수 있습니다 .apport
fork
setuid
setgit
exec
zenity