为什么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()函数中断,但没有成功。
答案 0 :(得分:2)
为什么gdb退出之前在主函数
的第一个断点处停止
main
之前退出。这可能由于以下几个原因而发生,例如:
execve
系统调用中拒绝它,而不是程序的单个指令实际运行。~/.bashrc
,错误$PATH
等)。您可以通过在GDB外部运行程序(它运行吗?),在没有~/.bashrc
的情况下运行,使用(gdb) catch syscall exit_group
(在Linux上)等来缩小实际原因。
答案 1 :(得分:0)
访问辅助终端端口时出现权限问题。
正在使用参数-tty
启动gdb,该参数将输入/输出切换到另一个tty端口(在这种情况下伪:pts)。
当两个终端被不同用户打开时,会出现这个问题,即使在第一次登录后用su
命令更改用户,第一个登录的用户需要在两个ttys中保持相同。 / p>