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

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

  1. Включите пользователя для запуска gdb как root без запроса пароля:
    sudo visudo
    Добавьте следующую строку после всех других правил:
    ALL=(root) NOPASSWD:/usr/bin/gdb
  2. Создайте или измените конфигурацию отладки в eclipse, чтобы запустить gdb как root
    например, в Run> Debug Configurations> C / C ++ Application> Отладка вашего проекта:
    изменить Отладчик> Главная> Отладчик GDB от gdb до sudo -u gdb

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

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

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

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

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

 sudo gdbserver : --attach  

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

 sudo gdbserver :  

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

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

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

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

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

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

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

попробуйте sudo ./eclipse, затем отлаживайте, как обычно

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

 sudo gdb ./my_program 

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

С консоли:

 sudo gdbserver localhost: ./my_program 

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

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

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

 sudo gdbserver /dev/ptmx ./my_program 

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