调用 bazel 命令进行调试时 GDB 立即退出
GDB quits instantly when invoking bazel command for debugging
我发现两个 links 展示了如何在 bazel 下使用 gdb 进行调试 (link 1, link 2)。
两个 link 都声明在调用以下命令时启动调试会话有效:
bazel run --compilation_mode=dbg --run_under=gdb //my:target
当我 运行 命令时,gdb 启动正常,加载符号和所有内容,但随后立即退出。输出与 here (from link 2).
中所示相同
第一个link也提到了--direct_run
-参数,但这个参数也不起作用。 gdb 立即退出,并显示以下附加在 gdb 输出后的消息(来自之前的 link):
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 交互?
提前致谢。
该线程中的另一条消息 (https://groups.google.com/d/msg/bazel-discuss/Mu95dnuA2MQ/I2BDu0SDGAAJ) 指出 bazel 不会将 tty 传递给 gdb 的标准输入。如果您在没有附加标准输入的情况下调用 gdb,您所看到的就是您所期望的:
$ gdb -silent -nx < /dev/null
(gdb) quit
解决方法的一个选择可能是编写调用 gdb < /dev/tty
.
的包装器脚本
我发现两个 links 展示了如何在 bazel 下使用 gdb 进行调试 (link 1, link 2)。
两个 link 都声明在调用以下命令时启动调试会话有效:
bazel run --compilation_mode=dbg --run_under=gdb //my:target
当我 运行 命令时,gdb 启动正常,加载符号和所有内容,但随后立即退出。输出与 here (from link 2).
中所示相同第一个link也提到了--direct_run
-参数,但这个参数也不起作用。 gdb 立即退出,并显示以下附加在 gdb 输出后的消息(来自之前的 link):
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 交互?
提前致谢。
该线程中的另一条消息 (https://groups.google.com/d/msg/bazel-discuss/Mu95dnuA2MQ/I2BDu0SDGAAJ) 指出 bazel 不会将 tty 传递给 gdb 的标准输入。如果您在没有附加标准输入的情况下调用 gdb,您所看到的就是您所期望的:
$ gdb -silent -nx < /dev/null
(gdb) quit
解决方法的一个选择可能是编写调用 gdb < /dev/tty
.