2010-12-10 4 views
18

Разработка программы на OSX с использованием Java и IntelliJ. Работает с сетевыми сокетами и ICMP. Следовательно, программа должна запускаться как root или sudo'd на OSX. Программа отлично работает в терминальном окне вне IntelliJ под sudo. Тем не менее, я хотел бы отлаживать и запускать его из IntelliJ (V9). В IntelliJ это ошибки (мне нужно root privs для перечисления сетевых устройств). Я знаю, как передавать параметры программы и VM в IntelliJ, но теперь, как нажать Run and/Debug и запустить его под sudo? Нужно в основном sudo java ...... MyProgram вместо java ..... MyProgram Любые идеи или обходные пути.IntelliJ - Running Program as Sudo

ответ

34

Я вышел с ответом и хотел поделиться им на всякий случай, если кто-то еще столкнется с этим. Чтобы решить эту проблему, я попытался понять, что я делаю с QT & QT Creator при программировании сети.

В OSX я открыл окно терминала и cd'd до/Applications/IntelliJ IDEA 9.0.3.app/Contents/MacOS. Там вы найдете файл под названием idea, который запускает IDE. Я запустил это как sudo (sudo ./idea). Это позаботилось о разрешении на что-либо, запущенном Intellij, и я мог отлаживать и выполнять свой код по мере необходимости.

sudo /Applications/IntelliJ IDEA 9.0.3.app/Contents/MacOS/idea 

Поскольку это dev-машина, и я контролирую ее, безопасность не является проблемой в этом случае.

Надеюсь, что это поможет кому-то еще.

+1

Есть ли способ убедиться, что IntelliJ всегда открывается так? – JaKXz

+1

Что вы написали сценарий оболочки с этой строкой в ​​нем: sudo "/ Applications/IntelliJ IDEA 12.app/Contents/MacOS/idea" &.CHMOD сценарий для 755 и запустить Intellij оттуда, а не использовать обычный значок. –

+0

. Так что для меня это создавало проблему, потому что она не начинала intellij с зарегистрированным пользователем, поэтому я cd'd для '/ Applications/IntelliJ IDEA 9.0. 3.app/Contents/MacOS' и запустил сценарий идеи с зарегистрированным пользователем, и моя проблема была решена. Теперь я с нетерпением жду, что именно происходит, когда мы открываем любое приложение из поиска в центре внимания. Во всяком случае, я трачу 3-4 часа на это, и это решение помогло мне .. Так сильно обнять брата. Благодаря тонну. –

0

Отладка программ sudo запрещена операционной системой, если отладчик работает от имени пользователя root по соображениям безопасности.

Итак, даже если вы можете понять, как получить IntelliJ для использования sudo, это не принесет вам пользы.

+0

Я надеялся, что смогу сделать что-то подобное, как могу, на C++ и Qt. Я могу запустить процесс, а затем присоединить к нему отладчик. В Qt Creator я запускаю Qt Creator с помощью sudo, запускаю программу sudo с myprogram как параметр sudo, запускаю myprogram из Qt Creator, а затем присоединяю gdb к запущенному процессу. Затем я смогу пройти через него по мере необходимости. В этом случае нет такой удачи. Как вы сказали, мой отладчик работает под root, поэтому он работает. –

+0

Чтобы быть ясным. Он прав, что вы не можете отлаживать процесс, который был запущен с помощью sudo без запуска отладчика в sudo. Тем не менее, запуск intellij с sudo будет работать нормально, риск состоит в том, что любые файлы, созданные версией, запущенной в «Sudo», будут принадлежать «root», что может вызвать проблемы, если вы не всегда используете sudo или root пользователю написать свой код (которого вы, вероятно, не должны делать). Вы должны начать gdbserver и присоединить его к процессу: 'Судо gdbserver локальный: --attach ' Эта команда может быть немного неправильно, но это должно заставить людей там. – njfife

0

Внутри терминала:

sudo -s 

доступ раздай суперпользователя.

оттуда вы можете запустить Idea IDE с помощью сценария:

/Applications/IntelliJ\ IDEA*/bin/idea.sh 

и таким образом я могу работать в сети, где ошибки разрешения где напечатанной ранее.

+4

/Приложения/IntelliJ \ IDEA \ * .app/Содержание/MacOS/идея –

Смежные вопросы