我找到了两个链接,显示了如何使用bazel下的gdb进行调试(link 1,link 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交互?
提前致谢。
答案 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
的包装器脚本。