Стек xdebug как ссылки на netbeans
Я пытаюсь сделать ссылки на стек xdebug для открытия файлов непосредственно в NetBeans, вот что я сделал до сих пор:
Я создал исполняемый файл
/home/david/bin/netbeans.sh
(который я chmoded + х), содержащий:#!/bin/bash url=$2 file=${url#*\/\/} file=${file%?line=*} line=${url#*line=} /home/david/Programs/netbeans-8.1/bin/netbeans --open $file:$line
в
/etc/php5/apache2/php.ini
я добавилxdebug.file_link_format = "netbeans://%f?line:%l"
в firebug "about: config" я создал новый логический:
network.protocol-handler.expose.netbeans => false
Я создал новый обработчик url в gconf Gnome:
gconftool-2 -t string --set /desktop/gnome/url-handlers/netbeans/command "/home/david/bin/netbeans.sh %s" gconftool-2 -t bool --set /desktop/gnome/url-handlers/netbeans/enabled true gconftool-2 -t bool --set /desktop/gnome/url-handlers/netbeans/needs_terminal false
теперь, когда я получаю сообщение об ошибке, файлы стека xdebug являются ссылками типа netbeans:///var/www/html/path/to/file.php
, все хорошо.
Когда я нажимаю на одну из этих ссылок, я получаю окно "Launch Application", где мне нужно выбрать приложение, с которым открывается файл: я выбираю исполняемый файл, созданный на шаге 1, то есть: /home/david/bin/netbeans.sh
но я получаю сообщение об ошибке:
/ home / david /: не существует или не является простым файлом
И вот где я застрял, я не понимаю, почему я получаю эту ошибку и как ее решить.
1 ответ
Итак, мы нашли решение этой проблемы. Прежде всего, был неправильный номер аргумента, если netbeans.sh
файл. Так url=$2
должно быть url=$1
, Но также синтаксический анализ имени файла и номера строки в скрипте был неверным.
Так как указанная строка имеет вид netbeans:///path/to/file?line=[LineNumber]
Разбор может быть выполнен:
#!/bin/bash
# extract the protocol
proto="$(echo $1 | grep :// | sed -e's,^\(.*://\).*,\1,g')"
# remove the protocol
url="$(echo ${1/$proto/})"
# get file and line
file="$(echo $url | cut -d\? -f1)"
line="$(echo $url | cut -d\= -f2)"
/home/david/Programs/netbeans-8.1/bin/netbeans --open $file:$line