我正在尝试使 xdebug 堆栈链接直接在 netbeans 中打开文件,以下是我迄今为止所做的:
我创建了一个可执行文件
/home/david/bin/netbeans.sh
(我将其 chmoded +x),其中包含:#!/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
我在 Gnome 的 gconf 中创建了一个新的 url 处理程序:
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
,一切都很好。
当我单击其中一个链接时,我得到了“启动应用程序”窗口,我必须在其中选择要使用的应用程序来打开文件:我选择在步骤 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