Вышеупомянутые решения не сработали для меня. Скорее я использовал более надежный способ (у него могут быть накладные расходы):
$countarr = count($newArr); // Count the elements in an array.
$checkarr = "" ; //Initialize the value of variable to blank.
for($x=0;$x<$countarr;$x++)
{
$checkarr = $newArr1[$x] ;
if($checkarr != "" )
{
// do stuff if array is not empty.
}
}
Я пишу C не Java, но это должно работать в любом случае. Я использую remote debug - определите «удаленное» соединение с LOCALHOST, которое позволяет указать пользователя, с которым вы будете подключаться, указать ROOT. Затем определите удаленное приложение в подключении конфигурации отладки: LOCALHOST. Обязательно проверьте «пропустить загрузку до целевого пути» в нижней части основной вкладки, а также в окне свойств подключения.
Вы можете пойти по этому пути
blockquote>setcap 'cap_net_admin=+ep' Server
- настроить sudo, чтобы ваш пользователь Eclipse мог запускать setcap.
Итак, у вас будет прозрачная отладка (без sudo wrapper - gdb ok). Минусы: это локальное нарушение безопасности.
Решение:
поместить это в / opt / my-stupid-eclipse
#! / Bin / sh
setcap 'cap_net_admin = + ep cap_net_raw = + ep' $ 1
blockquote>chmod + x этот скрипт и белый список его в конфигурации sudo.
имя пользователя ALL = (ALL) NOPASSWD: / opt / my-stupid-eclipse
blockquote>Добавьте его в свой файл makefile, укажите путь к вашему двоичному файлу сервера.
Теперь у вас есть довольно странный, но безопасный скрипт, который не может быть изменен другими пользователями ... и все еще небольшое нарушение для замены двоичного кода сервера любым вредоносным кодом, который будет набирать ограничения, поэтому никакая проверка имени / stricts не поможет .. может $ 1 будет заражен командами bash, нет? Угадайте, нет.
Для этого вы можете использовать механизм Remote Java Application.
Вы можете выполнить следующие шаги для компиляции / отладки приложений как суперпользователя.
#!/bin/bash
# file: /usr/lib/jvm/java-6-openjdk/jre/bin/java
# descr: Starter for jdk. Runs jdk as root when
# cmd-line-arg "--run-as-root" is specified.
#
jre="/usr/lib/jvm/java-6-openjdk/jre/bin/java.ori"
run_as_root=false
args=
# Filter command-line argument
for arg in "$@"
do
case "$arg" in
--run-as-root) run_as_root=true
;;
*) args="$args $arg"
;;
esac
done
# Remove leading whitespaces
args=$(echo $args | sed -e 's/^[ \t]*//')
if $run_as_root
then
echo "WARNING: Running as root!"
gksu "$jre $args"
else
$jre $args
fi
Чтобы запускать проекты с правами root, вам необходимо выполнить следующие действия:
Примечание: Идея взята из http://www.eclipse.org/forums/index.php/mv/msg/87353/724852/#msg_724852
pkexec $jre $args
– Giuliano
3 April 2014 в 16:16
Unrecognized option: --run-as-root Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.
Любые идеи? Благодарю.
– adrian.nicolau
14 July 2014 в 15:33
--run-as-root
вместо bash-скрипта.
– rednammoc
8 August 2014 в 00:16
Предполагая, что вы находитесь в Linux (* nix), как насчет запуска сеанса eclipse с помощью команды sudo?
Например,
sudo ~/eclipse/eclipse
Теперь, что бы вы ни делали с eclipse, есть контекст sudo?
sudo
заключается в том, что если вы хотите позже переключить свое затмение на не-sudo-режим, вы столкнетесь с различными проблемами, потому что затмение не сможет записывать в различные файлы, которые теперь принадлежат корень. Это приведет к неуказанному поведению затмения.
– Yatendra Goel
11 February 2014 в 18:49
Лучший ответ, возможно, если это послужит вашим потребностям и возможно, может быть простым перенаправлением портов на вашем маршрутизаторе.
Вместо того, чтобы заставить ваш linux / unix открыть зарезервированный порт, когда вы только разрабатываете это сейчас (не устанавливаете) и хотите запустить его в отладчике, установите маршрутизатор для перенаправления входящих (например, внешний) порт 443 в порт, который более удобен для ваших текущих потребностей (скажем, 4443).
Я думаю, что большинство маршрутизаторов поддерживают это, и если ваш не дает вам маму хорошую идею для рождества или рождения!
Другой вариант - использовать iptables или ipfilter для пересылки порта 80 на порт выше 1024.
(Может ли кто-нибудь внести ссылку на практическое и понятное объяснение?)
Как упоминалось в этой теме :
Чтобы открыть порт ниже 1024 в системах Unix / Linux, вам нужно быть «root».
]Я также использовал аргумент
blockquote>-Dorg.eclipse.equinox.http.jetty.port=8080
для изменения порта прослушивания, но это, кажется, игнорируется (в соответствии с stacktrace)Пожалуйста, используйте «
blockquote>-Dorg.osgi.service.http.port=8080
".
Как упоминалось в HTTP Service :
org.osgi.service.http.port
- указывает номер порта, который будет использоваться для http обслуживание. Значение по умолчанию для этого свойства - 80 (что требует прав на root), согласно спецификации OSGi.org.osgi.service.http.port.secure
- указывает номер порта, который будет использоваться для безопасного обслуживания HTTP. Значение по умолчанию для этого свойства - 443 (что требует разрешения root) в соответствии со спецификацией OSGi.Возможно, если вы попытаетесь изменить это последнее свойство на значение выше 1024, оно может работать без требующих особых привилегий.
Если вы используете внешние инструменты (меню «Выполнить» / «Внешние инструменты» или значок рядом с значками «Запуск / отладка» на панели инструментов), вы можете использовать любые сценарии или что угодно. Сценарии могут дать вам повышенные права или что-то еще.
С другой стороны, таким образом отладка приложения может стать очень сложной, так как ни команды Run, ни Debug не связаны с этой настройкой внешнего инструмента. Возможно, можно подключить отладчик Eclipse приложения, но я не знаю, как это возможно.