Возврат сбойного процесса без зависимости от дампа ядра операционной системы - PullRequest
0 голосов
/ 16 октября 2018

Я хотел бы знать, есть ли способ, которым мы можем получить отслеживание сбойного процесса без зависимости от дампа ядра во FreeBSD или Linux.Обычно, чтобы получить обратную трассировку запущенного процесса, мы запускаем bstack PID_OF_PROCESS во FreeBSD и pstack PID_OF_PROCESS в Linux.

Но как только процесс завершится с ошибкой, нам нужно зависеть от файла ядра, чтобы получить обратную трассировку, иу нас тоже нет PID, если мы хотим выполнить bstack или pstack.

Есть ли способ, похожий на API ядра, или что-то, чтобы получить обратную копию сбойного процесса, не делая gdb для файла ядра?

Пожалуйста, дайте мне знать, если мне нужно предоставить дополнительную информацию о запросе.

1 Ответ

0 голосов
/ 16 октября 2018

Вы можете запустить ваше приложение под GDB и создать некоторый макрос, который будет выполнять, например: команды «где» и «шаг» в цикле.После SIGSEGV этот макрос / скрипт остановится, и тогда вы сможете увидеть след вашей программы.Конечно, это может занять много времени, чтобы поймать проблемную ситуацию.

Вы также можете изменить свое ядро, чтобы показать весь обратный след приложения пользовательского пространства, но для этого нужны некоторые знания API ядра.

Может быть, valgrind также может быть использован для такого расследования?

Прочтите также man gcc о -fstack-protector.

Кстати, почему вы не хотите использовать файлы дампа памяти

...