【问题标题】:launching emacs-gdb from the command line part 2从命令行启动 emacs-gdb 第 2 部分
【发布时间】:2011-07-05 23:03:30
【问题描述】:

我想在 gdb 运行的情况下启动 emacs。我想同时输入所有命令行参数。这个帖子: Start emacs-gdb from command line?,已经解决了 95% 的问题,但是我有一个烦人的后续问题。我真的需要能够传入有空格的参数,唉

edbg path/to/myprog --firstarg "something with spaces" --secondarg 1

我一直在这个网站和谷歌上搜索,我玩了几个小时,但我似乎无法弄清楚。

有什么想法吗?

【问题讨论】:

    标签: emacs gdb zsh


    【解决方案1】:

    所以,据我了解,您已经定义了这个 Bash 函数:

    edbg() { emacs --eval "(gdb \"gdb --annotate=3 $*\")";}
    

    它不起作用,因为参数中的任何空格都会被重新解析为新的单词边界。好吧,这在 Bash 脚本中是一个很常见的问题,即有一个特殊的变量 $@,当它位于双引号字符串中时,它会以不同的方式扩展函数的参数。这让我们走到了一半。剩下的就是把引号放回去:

    edbg() {
      arglist="";
      for a in "$@"; do
        if [[ $a == ${a/ /} ]]; then
          arglist="$arglist $a";
        else
          arglist="$arglist \\\"$a\\\"";
        fi
      done;
      emacs --eval "(gdb \"gdb --annotate $arglist\")"
    }
    

    请注意,这不会在包含也需要引号的制表符或换行符的 args 周围加上引号;您的 $IFS 可能会有所不同。

    【讨论】:

    • 感谢 db48x。这把我带到了我需要去的地方。为了帮助其他人,如果您使用以下行修补上述内容,该示例应该完全按预期工作: emacs --eval "(gdb \"gdb --annotate=3; -cd pwd --args $arglist\ ")"
    猜你喜欢
    • 2012-04-27
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2016-07-10
    • 2013-03-02
    • 1970-01-01
    相关资源
    最近更新 更多