gdb正在显示"程序已退出"在启动期间

时间:2017-04-18 15:24:55

标签: gdb

为什么gdb显示程序在启动时退出,所以在停止在main函数的第一个断点之前?

一些步骤:

$ gdb --cd $programhome -tui -tty $reservedtty --args myprogram

b main
r

gdb显示:

Starting program: myprogram
During startup program exited with code 1.

我已经尝试在exit()函数中断,但没有成功。

2 个答案:

答案 0 :(得分:2)

  

为什么gdb退出之前在主函数

的第一个断点处停止
  1. GDB 退出。你的程序确实如此。
  2. 在到达main之前退出
  3. 这可能由于以下几个原因而发生,例如:

    1. 损坏的二进制文件 - 由于某种原因,内核在execve系统调用中拒绝它,而不是程序的单个指令实际运行。
    2. 动态链接器拒绝它(例如因为缺少某些必需的库或符号)
    3. 您的shell拒绝执行该程序(错误~/.bashrc,错误$PATH等)。
    4. 您可以通过在GDB外部运行程序(它运行吗?),在没有~/.bashrc的情况下运行,使用(gdb) catch syscall exit_group(在Linux上)等来缩小实际原因。

答案 1 :(得分:0)

访问辅助终端端口时出现权限问题。

正在使用参数-tty启动gdb,该参数将输入/输出切换到另一个tty端口(在这种情况下伪:pts)。

当两个终端被不同用户打开时,会出现这个问题,即使在第一次登录后用su命令更改用户,第一个登录的用户需要在两个ttys中保持相同。 / p>