Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Можно ли узнать из за какого потока было убито приложение? / 25 сообщений из 55, страница 1 из 3
31.01.2007, 13:42
    #34296045
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
Интересует linux.

Если происходит критическая ошибка, то приложение вываливается с Killed. Как можно узнать из-за какого pid это произошло. Опции компиляци? Средства?
...
Рейтинг: 0 / 0
31.01.2007, 13:50
    #34296080
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
кто узнавать будет ?
...
Рейтинг: 0 / 0
31.01.2007, 14:13
    #34296185
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
Gluk (Kazan)кто узнавать будет ?

Я узнавать буду где у меня глючит.
...
Рейтинг: 0 / 0
31.01.2007, 14:59
    #34296422
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
AkhИнтересует linux.

Если происходит критическая ошибка, то приложение вываливается с Killed. Как можно узнать из-за какого pid это произошло. Опции компиляци? Средства?

Посмотрите man ptrace, wait, waitpid .

По контексту вопроса не ясно , что используестя fork или pthread_create.

ptrace должен помочь, но не благодарное это дело писать свой дебагер.
...
Рейтинг: 0 / 0
31.01.2007, 15:17
    #34296508
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
onstat- AkhИнтересует linux.

Если происходит критическая ошибка, то приложение вываливается с Killed. Как можно узнать из-за какого pid это произошло. Опции компиляци? Средства?

Посмотрите man ptrace, wait, waitpid .

По контексту вопроса не ясно , что используестя fork или pthread_create.

ptrace должен помочь, но не благодарное это дело писать свой дебагер.

pthread_create

Вот именно, что свой дебагер не благодарное дело писать.

Я не пойму, почему когда приложение убивается не пишется причина, или хотябы источник причины (pid из за которого произошла смерть). Может как-то это можно "включить"?
...
Рейтинг: 0 / 0
31.01.2007, 15:41
    #34296627
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
Akh onstat- AkhИнтересует linux.

Если происходит критическая ошибка, то приложение вываливается с Killed. Как можно узнать из-за какого pid это произошло. Опции компиляци? Средства?

Посмотрите man ptrace, wait, waitpid .

По контексту вопроса не ясно , что используестя fork или pthread_create.

ptrace должен помочь, но не благодарное это дело писать свой дебагер.

pthread_create

Вот именно, что свой дебагер не благодарное дело писать.

Я не пойму, почему когда приложение убивается не пишется причина, или хотябы источник причины (pid из за которого произошла смерть). Может как-то это можно "включить"?

GDB должен строчку говорить где это произошло.
Ну а дальше по обстоятельствам.
...
Рейтинг: 0 / 0
31.01.2007, 16:00
    #34296731
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
onstat-GDB должен строчку говорить где это произошло.
Ну а дальше по обстоятельствам.

Он нормально тянет много-(в районе десятка)-потоковое приложение?
...
Рейтинг: 0 / 0
31.01.2007, 16:56
    #34296979
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
AkhЯ не пойму, почему когда приложение убивается не пишется причина, или хотябы источник причины (pid из за которого произошла смерть). Может как-то это можно "включить"?хочешь сделать красивое окошечко «отправить ачот в микросакс»?
...
Рейтинг: 0 / 0
31.01.2007, 17:08
    #34297055
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
Akh onstat-GDB должен строчку говорить где это произошло.
Ну а дальше по обстоятельствам.

Он нормально тянет много-(в районе десятка)-потоковое приложение?

Если чесно, не знаю.
...
Рейтинг: 0 / 0
31.01.2007, 17:37
    #34297168
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
onstat- Akh onstat-GDB должен строчку говорить где это произошло.
Ну а дальше по обстоятельствам.

Он нормально тянет много-(в районе десятка)-потоковое приложение?

Если чесно, не знаю.

ОК. Напорюсь еще раз на глюки обязательно попробую.
...
Рейтинг: 0 / 0
31.01.2007, 18:44
    #34297379
A. Fig Lee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
Какая разница, он же core будет смотреть - труп программы (gdb)
...
Рейтинг: 0 / 0
01.02.2007, 09:56
    #34298153
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
A. Fig LeeКакая разница, он же core будет смотреть - труп программы (gdb)

Это мне даст информацию о потоке?
...
Рейтинг: 0 / 0
01.02.2007, 16:38
    #34299785
A. Fig Lee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
Akh A. Fig LeeКакая разница, он же core будет смотреть - труп программы (gdb)

Это мне даст информацию о потоке?


где здесь:

Akh
Он нормально тянет много-(в районе десятка)-потоковое приложение?

про информацию о потоке?
...
Рейтинг: 0 / 0
01.02.2007, 16:47
    #34299823
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
A. Fig Lee Akh A. Fig LeeКакая разница, он же core будет смотреть - труп программы (gdb)

Это мне даст информацию о потоке?


где здесь:

Akh
Он нормально тянет много-(в районе десятка)-потоковое приложение?

про информацию о потоке?

Свалится не дойдя до "нужного" места.
...
Рейтинг: 0 / 0
01.02.2007, 16:51
    #34299837
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
Собсна, прошу по теме, без под%%%ок, если я правельно понял Афигли.
...
Рейтинг: 0 / 0
01.02.2007, 19:19
    #34300305
A. Fig Lee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
AkhСобсна, прошу по теме, без под%%%ок, если я правельно понял Афигли.

если смотреть core - где там потоки? Ето мемори и стек дамп. Потоки когда живую программу дебагишь.
...
Рейтинг: 0 / 0
01.02.2007, 19:51
    #34300361
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
A. Fig Lee AkhСобсна, прошу по теме, без под%%%ок, если я правельно понял Афигли.

если смотреть core - где там потоки? Ето мемори и стек дамп. Потоки когда живую программу дебагишь.

Hint: Некоторое количество стеков( по количеству нитей на момент падения).
...
Рейтинг: 0 / 0
01.02.2007, 20:16
    #34300397
A. Fig Lee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
onstat- A. Fig Lee AkhСобсна, прошу по теме, без под%%%ок, если я правельно понял Афигли.

если смотреть core - где там потоки? Ето мемори и стек дамп. Потоки когда живую программу дебагишь.

Hint: Некоторое количество стеков( по количеству нитей на момент падения).

и что? он "поймет" если их 2, но "не поймет" - если 10?
Вопрос то был - потянет ли gdb 10 потоков?
...
Рейтинг: 0 / 0
02.02.2007, 09:54
    #34301071
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
А какой менеджер потоки/процессы убивает?
...
Рейтинг: 0 / 0
02.02.2007, 11:06
    #34301348
!
!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
AkhА какой менеджер потоки/процессы убивает?

ядро.

man kill
man signal
...
Рейтинг: 0 / 0
02.02.2007, 11:43
    #34301577
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
! AkhА какой менеджер потоки/процессы убивает?

ядро.

man kill
man signal

Пошутил что ли? Ясное дело, что не mc.

Когда убивается поток, то в текущую консоль выкидывается сообщение, что он убит. Кто кидет это сообщение? Мененджер потоков? Как его зовут? Где в ядре он находится?

Так постоновка понятна?
...
Рейтинг: 0 / 0
02.02.2007, 12:04
    #34301694
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
Akh ! AkhА какой менеджер потоки/процессы убивает?

ядро.

man kill
man signal

Пошутил что ли? Ясное дело, что не mc.

Когда убивается поток, то в текущую консоль выкидывается сообщение, что он убит. Кто кидет это сообщение? Мененджер потоков? Как его зовут? Где в ядре он находится?

Так постоновка понятна?

Процесс родитель ловит сигнал SIGCHLD в обработчике делает wait | waitpid
которые вычитывают причины завершения процесса из структур ядра.

man 7 signal
Signal Value Action Comment
-------------------------------------------------------------
SIGCHLD 20,17,18 Ign Child stopped or terminated


Обрати внимание, что по умолчанию он игнорируется.
...
Рейтинг: 0 / 0
02.02.2007, 12:34
    #34301842
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
onstat-
Процесс родитель ловит сигнал SIGCHLD в обработчике делает wait | waitpid
которые вычитывают причины завершения процесса из структур ядра.

man 7 signal
Signal Value Action Comment
-------------------------------------------------------------
SIGCHLD 20,17,18 Ign Child stopped or terminated


Обрати внимание, что по умолчанию он игнорируется.

Не канает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
void *f(void *) {
    char *p= 0 ;

    printf("Child pid=%d\n", getpid());
    (*p)= 5 ;

    return NULL;
};

void fsig(int sig) {
    int pid;
    int status;

    printf("Signal %d\n", sig);
    pid=wait(&status);
    printf("%d(pid) exited.\n", pid);
}

int main () {
    printf("Main pid=%d\n", getpid());

    if (SIG_ERR==signal(SIGCHLD, fsig)) {
        printf("Signal error!\n");
        exit(- 1 );
    };

    pthread_t t;
    pthread_create(&t, NULL, f, NULL);
    sleep( 1 );

    return  0 ;
}


автор
Main pid=4072
Child pid=4074
Killed
...
Рейтинг: 0 / 0
02.02.2007, 12:48
    #34301903
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
Akh

Не канает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
.....................................
void fsig(int sig) {
    int pid;
    int status;

    printf("Signal %d\n", sig);
    pid=wait(&status);
    printf("%d(pid) exited.\n", pid);
}

.......................
    pthread_t t;
    pthread_create(&t, NULL, f, NULL);
............
}


[quot автор]
Main pid=4072
Child pid=4074
Killed


Издеваешься?
Или лень дочитать до конца?

man 2 wait
In the Linux kernel, a kernel-scheduled thread is not a distinct con-
struct from a process. Instead, a thread is simply a process that is
created using the Linux-unique clone(2) system call; other routines
such as the portable pthread_create(3) call are implemented using
clone(2). Before Linux 2.4, a thread was just a special case of a
process, and as a consequence one thread could not wait on the chil-
dren of another thread, even when the latter belongs to the same
thread group. However, POSIX prescribes such functionality, and since
Linux 2.4 a thread can, and by default will, wait on children of other
threads in the same thread group.

The following Linux-specific options are for use with children created
using clone(2).



з.ы. Сам я это еще не пробовал.
...
Рейтинг: 0 / 0
02.02.2007, 13:14
    #34302045
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать из за какого потока было убито приложение?
Похоже я не прав с последним постом.
Вероятнее всего, что процесс со всеми нитями прибивается целяком,
и перехваты просто не успевают отработать.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Можно ли узнать из за какого потока было убито приложение? / 25 сообщений из 55, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]