调用bazel命令进行调试时,GDB立即退出

时间:2018-05-24 08:14:52

标签: c++ debugging gdb bazel

我找到了两个链接,显示了如何使用bazel下的gdb进行调试(link 1link 2)。

两个链接都声明在调用以下命令时启动调试会话:

bazel run --compilation_mode=dbg --run_under=gdb //my:target

当我运行命令时,gdb启动就好了,加载符号和所有内容,但随后立即退出。输出与here (from link 2)中显示的相同。

第一个链接也提到--direct_run - 参数,但这个参数也不起作用。 gdb立即退出,并显示以下消息,该消息在gdb(来自上一个链接)的输出后附加:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "en_US.ISO-8859-1",
        LC_ALL = "en_US.ISO-8859-1",
        LC_MEASUREMENT = "de_DE.UTF-8",
        LC_PAPER = "de_DE.UTF-8",
        LC_MONETARY = "de_DE.UTF-8",
        LC_NAME = "de_DE.UTF-8",
        LC_CTYPE = "en_US.ISO-8859-1",
        LC_ADDRESS = "de_DE.UTF-8",
        LC_NUMERIC = "de_DE.UTF-8",
        LC_TELEPHONE = "de_DE.UTF-8",
        LC_IDENTIFICATION = "de_DE.UTF-8",
        LC_TIME = "de_DE.UTF-8",
        LANG = "en_US.ISO-8859-1"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

我做错了什么?我该如何与gdb交互?

提前致谢。

1 个答案:

答案 0 :(得分:1)

该线程中的另一条消息(https://groups.google.com/d/msg/bazel-discuss/Mu95dnuA2MQ/I2BDu0SDGAAJ)指出bazel没有将tty传递给gdb的stdin。您所看到的是如果您在没有连接stdin的情况下调用gdb,您会期望的是什么:

$ gdb -silent -nx  < /dev/null
(gdb) quit

解决方法的一个选项可能是编写一个调用gdb < /dev/tty的包装器脚本。