xdebug 堆栈作为到 netbeans 的链接

xdebug 堆栈作为到 netbeans 的链接

我正在尝试使 xdebug 堆栈链接直接在 netbeans 中打开文件,以下是我迄今为止所做的:

  1. 我创建了一个可执行文件/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
    
  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. 我在 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/:不存在,或者不是纯文件

这就是我陷入困境的地方,我不明白为什么会出现这个错误以及如何解决它。

编辑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

相关内容