Как установить режим Follow-Fork в качестве дочернего в отладчике с помощью CMake

У меня система Linux, и я пишу программу, используя Clion IDE, которая использует CMake. У меня есть часть моей программы, где я хотел бы отладить дочерний процесс. Я прочитал несколько тем на этом форуме, но я до сих пор не знаю, как или где я могу включить эту функцию:

gdb отлаживает дочерний процесс после fork (follow-fork настроен дочерний режим)

Как отлаживать дочерний процесс после fork( ) в gdb?

Я только что попытался установить флаг CMAKE_CXX_FLAGS_DEBUG как set follow-fork-mode child, но CMake выдает ошибку. Ниже скриншот со всеми флагами, которые используются для компиляции и dbug моей программы. Итак, что и где я должен установить эту функцию.

введите описание изображения здесь

..::EDIT::..

Я считаю, что это хороший способ. Я думаю, что Ваш совет был полезен, но у меня есть следующая проблема. После использования Ваших инструкций мой код вылетает в строке

pid_t newProcessForClient = fork();

Заявление:

(gdb) set follow-fork-mode child [Новый процесс 31667] предупреждение: автоматическая загрузка файла "/lib32/libthread_db-1.0.so" была отклонена вашим безопасным путем автоматической загрузки, установленным на "$debugdir: $datadir/автозагрузка". предупреждение: невозможно найти libthread_db, соответствующую библиотеке потоков нижнего уровня, отладка потоков будет недоступна. [Переключение на процесс 31667] Продолжение с сигналом SIGABRT.

Программа завершена сигналом SIGABRT, Aborted. Программа больше не существует.


person Mbded    schedule 06.12.2015    source источник
comment
set follow-fork-mode child — это команда GDB, а не флаг компиляции. Просто введите эту команду в командной строке gdb.   -  person Tsyvarev    schedule 06.12.2015


Ответы (1)


Настройки отладки не имеют ничего общего с cmake. CMAKE_CXX_FLAGS_DEBUG устанавливает флаги отладки для компилятора. Однако вам нужно сообщить отладчику установить дочерний режим Follow-Fork-Mode. Для этого вам необходимо выполнить следующие шаги:

  1. Установите точку останова в начале вашей программы (т.е. родительской программы, а не дочерней программы)

  2. Запустите программу в отладчике.

  3. Перейдите в консоль отладчика (вкладка с меткой gdb) в clion и введите set follow-fork-mode child и set auto-load safe-path /< /эм>
  4. Продолжить отладку

Команда set auto-load safe-path / предназначена для переключения ограничений автозагрузки в соответствии с документация gdb.

person MarkusParker    schedule 06.12.2015
comment
Ваш пост полезен. Realy IDE пытается переключиться на новые процессы, но что-то не так. Не могли бы вы посмотреть на EDIT в моем сообщении? - person Mbded; 07.12.2015
comment
Я обновил свой пост, однако на этот раз он основан не на опыте, а на использовании Google. - person MarkusParker; 07.12.2015
comment
Хорошо я понял. Я попытался установить этот параметр, но он все тот же. Я думаю, что главный вопрос решен, т.к. ваш отзыв правильный, т.к. Теперь я должен посмотреть, что не так с моей системой. Спасибо - person Mbded; 07.12.2015
comment
С CLion 2017.3.3 не работает. Я установил set follow-fork-mode child из консоли gdb, но когда отлаживаемый процесс разветвляется, новый отладчик CLion процесса просто отключается. - person Jaime Hablutzel; 26.02.2018