У меня есть исполняемый файл Windows, работающий с Wine в Linux.
Windows Исполняемый файл вызывает собственную динамическую библиотеку Linux (winelib, .dll.so).
Встроенная динамическая библиотека Linux использует некоторый код C, который я хочу отладить в CLion.
CLion работает непосредственно в той же ОС Linux, что и отлаженное приложение. (Удаленная разработка не используется.)
Проблема в том, что CLion теряет контроль над процессом, поскольку Wine перезагружается с помощью вызова execve во время его инициализация. Я думаю, что это не проблема, связанная с Wine, но ее причиной является создание самого подпроцесса.
Что я пробовал:
Добавление сна и привязка процесса вручную после выполнения. Хотя он присоединяет отладчик CLion к дочернему процессу, точки останова по-прежнему не срабатывают и остаются серыми. (В подсказке говорится, что этой строке кода не соответствует ни один исполняемый код. Она останется прежней, если я перенесу точку останова в другое место.)
Изменение параметров отладчика CLion во всех комбинациях.
Использование raise(SIGTRAP); в отлаживаемом коде. В отладчике это не остановилось.
Настройка gdb (того, что используется CLion) с помощью файла .gdbinit. Пробовал и в домашней папке, и в папке проекта, ничего не помогло. Конфигурация была:
Linux, Wine, C [list] [*]У меня есть исполняемый файл Windows, работающий с Wine в Linux. [*]Windows Исполняемый файл вызывает собственную динамическую библиотеку Linux (winelib, .dll.so). [*]Встроенная динамическая библиотека Linux использует некоторый код C, который я хочу отладить в CLion. [*]CLion работает непосредственно в той же ОС Linux, что и отлаженное приложение. (Удаленная разработка не используется.) [/list] Проблема в том, что CLion теряет контроль над процессом, поскольку Wine перезагружается с помощью вызова execve во время его инициализация. Я думаю, что это не проблема, связанная с Wine, но ее причиной является создание самого подпроцесса. Что я пробовал: [list] [*]Добавление сна и привязка процесса вручную после выполнения. Хотя он присоединяет отладчик CLion к дочернему процессу, точки останова по-прежнему не срабатывают и остаются серыми. (В подсказке говорится, что этой строке кода не соответствует ни один исполняемый код. Она останется прежней, если я перенесу точку останова в другое место.) [*]Изменение параметров отладчика CLion во всех комбинациях. Использование raise(SIGTRAP); в отлаживаемом коде. В отладчике это не остановилось. [*]Настройка gdb (того, что используется CLion) с помощью файла .gdbinit. Пробовал и в домашней папке, и в папке проекта, ничего не помогло. Конфигурация была: [/list] [code]set detach-on-fork off set follow-fork-mode child [/code] Ничего не помогло. Кроме того, я не могу найти в Интернете решения, которое я еще не пробовал.