Поэтому я запускаю свое приложение на C ++ в GDB, и когда оно выходит, я в основном получаю:
[Thread 0x7fff76e07700 (LWP 6170) exited]
[Thread 0x7fff76f08700 (LWP 6169) exited]
[Thread 0x7fff77009700 (LWP 6168) exited]
...
Program terminated with signal SIGKILL, Killed. The program no longer exists.
(gdb)
Я буквально понятия не имею, почему это происходит, почему я не могу сделать обратную трассировку, чтобы увидеть, как она вышла? У кого-нибудь есть идеи? Это никогда не должно заканчиваться 🙁
Спасибо!
Я буквально понятия не имею, почему это происходит,
Обычно это означает, что либо
kill -9 <your-pid>
, или жеkill -9
для этого). Вы должны посмотреть в /var/log/messages
(/var/log/syslog
в вариантах Ubuntu) для следов этого — ядро обычно записывает сообщение, когда оно OOMs какой-то процесс.почему я не могу сделать обратную трассировку, чтобы увидеть, как она вышла?
Потому что для того, чтобы увидеть обратный след, процесс должен существовать. Если он не существует, у него нет стека, и поэтому не может есть обратный след.
Возможно, что процесс столкнулся с процессором времени ulimit. Проверить с ulimit -a из среды, где процесс фактически запускается, если для параметра «Время ЦП» установлено любое значение, кроме «Неограниченное»
В моем случае произошел сбой (AV). Даже с подключенным GDB я не смог уловить это нарушение.
Надеюсь, поможет