Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.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
C 在键入';后,gdb在执行下一个程序行时返回什么退出代码;下一个';指挥部?_C_Linux_Gdb_Return Code - Fatal编程技术网

C 在键入';后,gdb在执行下一个程序行时返回什么退出代码;下一个';指挥部?

C 在键入';后,gdb在执行下一个程序行时返回什么退出代码;下一个';指挥部?,c,linux,gdb,return-code,C,Linux,Gdb,Return Code,在linux终端中,我键入了命令why(该命令不存在),并得到了此响应 No command 'why'found, did you mean: .... why: command not found 要获取退出代码,我输入了以下内容: $? 得到的答复是: 127: command not found 我假设当大多数命令运行时,它们返回代码。 现在使用gdb,在它执行被调试的C程序的下一行之后,它会返回任何代码吗?如果是这样,我如何获得这些代码(gdb中的$?之类的命令?——我还没有在

在linux终端中,我键入了命令why(该命令不存在),并得到了此响应

No command 'why'found, did you mean:
 ....
why: command not found
要获取退出代码,我输入了以下内容:

$?
得到的答复是:

127: command not found
我假设当大多数命令运行时,它们返回代码。 现在使用gdb,在它执行被调试的C程序的下一行之后,它会返回任何代码吗?如果是这样,我如何获得这些代码(gdb中的$?之类的命令?——我还没有在MANGDB页面中找到此类命令的文档


*在任何情况下,gdb都应该知道(并且可能会记录)该行是否成功执行,如果没有,会发生什么错误。

没有代码行成功执行这样的事情,至少不会以与shell命令相同的方式执行

在shell中,您输入的是内部shell命令或外部程序的名称。对于外部程序,
$?
的值是程序传递给
退出
系统调用的值。如果shell找不到具有该名称的程序或命令,它将向您发送错误消息描述的


在已编译的C程序中,没有“代码”在语句运行后返回。程序中只有状态更改。例如,如果语句为
i=i+1;
,则
i
的值比其在语句运行前的值大1。

没有代码行成功执行的情况,至少与给t的命令不同他会的

在shell中,您输入的是内部shell命令或外部程序的名称。对于外部程序,
$?
的值是程序传递给
退出
系统调用的值。如果shell找不到具有该名称的程序或命令,它将向您发送错误消息描述的


在已编译的C程序中,没有“代码”在语句运行后返回。程序中只有状态更改。例如,如果语句为
i=i+1;
,则
i
的值比其在语句运行前的值大1。

Unix进程始终返回一个值:它们的退出代码;之所以命名为该值,是因为大多数程序都以调用结束退出(还有其他可能性,但在这里并不重要)。请注意,所有进程都返回这样的代码,而不是大多数。Shell解释用户键入的行并将其转换为进程。当进程终止时,shel会让您知道它控制的最后一个进程的返回代码值。在bash中,此变量是
$?
。如果要打印它,可以使用
echo$?
。如果键入
$?
,它会将其解释为命令,但
127
(最后一个命令的退出值)不是命令。对于正确终止的进程,标准是返回值为0,任何非nul值都表示程序逻辑中的某个地方发生了错误


gdb还启动流程(控制流程)但是,执行一行代码并不是在运行进程,因此在执行程序代码的一个步骤后没有退出代码。在gdb中,当您执行某个终止进程的内容时,其退出代码在内部gdb变量中可用。
$\u exitcode

Unix进程总是返回一个值:它们的退出代码;名为因为大多数程序都会在调用
退出时终止(还有其他可能性,但在这里并不重要)。请注意,所有进程都返回这样的代码,而不是大多数。Shell解释用户键入的行并将其转换为进程。当进程终止时,shel会让您知道它控制的最后一个进程的返回代码值。在bash中,此变量是
$?
。如果要打印它,可以使用
echo$?
。如果键入
$?
,它会将其解释为命令,但
127
(最后一个命令的退出值)不是命令。对于正确终止的进程,标准是返回值为0,任何非nul值都表示程序逻辑中的某个地方发生了错误


gdb还启动流程(控制流程)但是,执行一行代码并不是在运行进程,因此在执行程序代码的一个步骤后没有退出代码。当您在gdb中执行终止进程的内容时,其退出代码在内部gdb变量中可用。当目标进程完成时,gdb将退出代码存储在nience变量
$\u exitcode
。这就是您要查找的吗?谢谢,这很有帮助。但在目标进程完成之前,“程序中只有一个状态更改”正如@dbush在下面解释的那样-这回答了我在问题的第一部分中希望得到的答案当目标流程完成时,gdb将退出代码存储在便利变量
$\u exitcode
中。这就是您要找的吗?谢谢,这很有帮助。但是在目标流程完成之前,“程序中只有一个状态更改"正如@dbush在下面解释的那样-这回答了我在问题的第一部分希望得到的答案谢谢你@Jean Baptiste。谢谢你回音$?来获取它的价值,而不是让shell在没有回音的情况下使用它的价值作为命令。我监督了这一点,谢谢。谢谢你@Jean Baptiste。谢谢你回音$?获取它的值,而不是让shell在没有echo的情况下使用它的值作为命令。我监督了这一点,谢谢。