Подтвердить что ты не робот

Как отлаживать приложение как root в eclipse в Ubuntu?

Я программирую приложение, используя libpcap. когда я отлаживаю приложение в обычном режиме, pcap не может получить сетевое устройство. кажется, что я должен отлаживать приложение в корне. Как я могу отлаживать приложение в корне? У меня есть пароль root. Я думаю, что eclipse имеет такой вариант, который может добавить root для приложения для отладки, но я не знаю, как это сделать. пожалуйста помоги.

4b9b3361

Ответ 1

  • Позволяет пользователю запускать gdb как root без запроса каких-либо Пароль:
    sudo visudo
    Добавьте следующую строку после всех других правил:
    <youruser> ALL=(root) NOPASSWD:/usr/bin/gdb
  • Создайте или измените конфигурацию отладки в запустить gdb как root
    например в Run > Конфигурации отладки > Приложение C/С++ > Отладка вашего проекта:
    изменить Отладчик > Главная > Отладчик GDB от gdb до sudo -u <youruser> gdb

Обновление (и предупреждение!):

В своем комментарии nategoose указал, что этот ответ должен прийти с предупреждением:

Включение пользователя для использования sudo для gdb, как указано в моем ответе, фактически дает ему привилегии администратора, которые во многих случаях могут быть нежелательным побочным эффектом. Поэтому я считаю ответ подходящим в среде, где не предполагается, что пользователь попытается повредить систему (например, это ваш собственный персональный компьютер или виртуальная машина).

Для многопользовательской (ненадежной) среды-пользователя я думаю, что лучше было бы использовать unix файлы, чтобы включить gdb для отладки приложения без необходимости использования привилегий администратора

Ответ 2

Запустите Eclipse с помощью sudo (только для полноты: http://www.eclipse.org/forums/index.php?t=msg&goto=516838&)

Обновление: Следуйте решению xmoex. Если вы запустите Eclipse как root (т.е. С помощью sudo), ваши файлы будут принадлежать root..., которые вы, вероятно, не хотите.

Ответ 3

Вы можете использовать gdbserver на localhost для присоединения к существующему процессу, следующая строка:

sudo gdbserver :<listening port> --attach <pid>

Или вы можете создать новый процесс с помощью gdbserver:

sudo gdbserver :<listening port> <process executable>

Затем вы можете создать конфигурацию отладки в Eclipse, на вкладке отладчика, элемент отладчика, выбрать gdbserver и ввести порт прослушивания на вкладке соединения ниже.

Ответ 4

Другим решением является предоставление вам (или исполняемому gdb) прав на внесение некоторых захватов pcap в качестве упомянутых здесь. Что-то вроде этого:

setcap cap_net_raw,cap_net_admin=eip /usr/bin/gdb

вы должны иметь возможность разрешить захват пакетов в gdb без root.

Ответ 5

этот вопрос задавался давно, но если это кому-то поможет, я открою ошибку в bugzilla, и этот короткий поток решил проблему: ошибка bugzilla

Ответ 6

С консоли в каталоге с вашим исполняемым файлом:

sudo gdb ./my_program

Если eclipse поддерживает удаленную отладку, вы можете сделать это, даже если оно выполняется локально.

На консоли:

sudo gdbserver localhost:<port_number> ./my_program

И затем скажите Eclipse адрес (localhost и номер порта, который вы выбрали).

О, да, вы сказали, что причина, по которой вы делаете это, заключалась в том, что вы использовали libpcap, поэтому вы не можете использовать удаленную отладку через TCP, потому что вы можете завершить захват ваших пакетов отладки в дополнение к другой сети трафик.

В этом случае вы выполняете удаленную (но действительно локальную) отладку через последовательный порт. Я никогда не делал этого на локальной машине, но вы могли бы использовать два фактических последовательных порта (прикрепляя их, используя нуль-модем), или попробуйте использовать psudoterminal:

sudo gdbserver /dev/ptmx ./my_program

Это создаст psudo-терминал под /dev/pts/, но вам нужно будет определить его имя, а также создать его с ограничительными разрешениями. Вы можете обойти их. Если вы не используете много окон терминалов с правами root, маловероятно, что у вас есть много записей в /dev/pts, принадлежащих root, поэтому обратите внимание на то, что делает после выполнения указанной выше команды, а затем sudo chmod или sudo chown чтобы сделать его пригодным для использования вашим обычным пользователем, а затем попросите отладчика использовать его в качестве вашего последовательного подключения к вашей удаленной цели отладки.

Ответ 7

проще всего попробовать sudo./eclipse, а затем отлаживать как обычно