Стек xdebug как ссылки на netbeans

Я пытаюсь сделать ссылки на стек xdebug для открытия файлов непосредственно в NetBeans, вот что я сделал до сих пор:

  1. Я создал исполняемый файл /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
    
  2. в /etc/php5/apache2/php.ini я добавил

    xdebug.file_link_format = "netbeans://%f?line:%l"
    
  3. в firebug "about: config" я создал новый логический:

    network.protocol-handler.expose.netbeans => false
    
  4. Я создал новый обработчик 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 /: не существует или не является простым файлом

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

редактировать скриншот конфигурации gnome

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
Другие вопросы по тегам