【发布时间】:2020-10-09 14:06:52
【问题描述】:
我在尝试使用 gdb 调试任何程序的任何代码上都收到此 gdb 错误。这是重现错误的最简单过程
- 使用以下内容创建一个
main.cpp文件:
int main(){
return 0;
}
- 运行
g++ -g main.cpp - 运行
gdb a.out - 在 gdb 内部使用
break 2在第 2 行设置断点 - 在 gdb 中使用
run运行程序
输出:
Starting program: /tmp/test/a.out
During startup program exited normally.
这一切都是在命令行上使用 gdb 完成的。我尝试使用 g++ 和 gcc 得到相同的结果。我真的不确定从这里去哪里。
- gdb 版本 = 9.2
- g++ 版本 = 9.3.0
编辑:我找出了导致问题的原因,但不知道如何解决它。这个问题似乎与我的 SHELL 变量有关。我目前使用xonsh 作为我的shell,但是当我将SHELL 环境变量设置回/bin/bash 时,一切都按预期工作。使用 xonsh 时我能做些什么来解决这个问题?我应该向 xonsh、gdb 报告,还是两者都不报告?
【问题讨论】:
-
运行前没有当前源文件,break 2 不起作用。你应该得到一个警告。
-
@S.M.不要认为那是真的。在加载二进制文件之后但在运行它之前设置这样的断点是很常见的。好吧,至少它可以在我的机器上运行。