Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gdb正在显示;“程序已退出”;启动期间_Gdb - Fatal编程技术网

gdb正在显示;“程序已退出”;启动期间

gdb正在显示;“程序已退出”;启动期间,gdb,Gdb,为什么gdb显示程序在启动期间退出,所以在主函数的第一个断点处停止之前 一些步骤: $ gdb --cd $programhome -tui -tty $reservedtty --args myprogram b main r gdb显示: Starting program: myprogram During startup program exited with code 1. 我已经尝试在exit()函数处中断,但没有成功 为什么gdb在退出之前要在主函数的第一个断点处停止 GDB没

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

一些步骤:

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

b main
r
gdb显示:

Starting program: myprogram
During startup program exited with code 1.
我已经尝试在exit()函数处中断,但没有成功

为什么gdb在退出之前要在主函数的第一个断点处停止

  • GDB没有退出。你的程序可以
  • 它在到达
    main
    之前退出
  • 发生这种情况有几个原因,例如:

  • 损坏的二进制文件——由于某种原因,内核在
    execve
    系统调用中拒绝了它,并且程序没有一条指令实际运行
  • 动态链接器拒绝它(例如,因为缺少某些必需的库或符号)
  • 您的shell拒绝执行程序(错误的
    ~/.bashrc
    ,错误的
    $PATH
    ,等等)

  • 您可以通过在GDB之外运行程序(是否运行?),在没有
    ~/.bashrc
    的情况下运行,使用
    (GDB)catch syscall exit_group
    (Linux上)等来缩小实际原因。

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

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


    当两个终端由不同的用户打开时,会出现该问题,即使在首次登录后您使用
    su
    命令更改用户,两个TTY中记录的第一个用户也必须相同。

    是。它运行。对不起,关于“gdb退出”,什么时候应该是“gdb显示过早退出”。我会编辑它。你的回答告诉我如何调查可能干扰程序加载/执行的外部因素。我找到了!那是tty权限。Tnx