在键入 'next' 命令后,gdb return 在执行下一个程序行时退出代码是什么?
what exit codes does gdb return on executing the next program line after one types the 'next' command?
在 linux 终端中,我输入了命令 why (此命令不存在),并得到了此响应
No command 'why'found, did you mean:
....
why: command not found
获取退出代码,这是我输入的:
$?
并得到回复:
127: command not found
我假设当大多数命令 运行 时,它们 return 代码。
现在用gdb,在它执行被调试的C程序的下一行后,它return有代码吗?如果是这样,我如何获得这些代码(gdb 中的 $? 之类的命令? - 我没有在 man gdb 中找到文档这样的命令的页面。
*在任何情况下,gdb 都应该知道(并可能记录)该行是否成功执行,如果不成功,出了什么问题。
没有一行代码可以成功执行,至少与 shell 命令执行的方式不同。
当您在 shell 时,您输入的是内部 shell 命令或外部程序的名称。在外部程序的情况下,$?
的值是程序传递给 exit
系统调用的值。如果 shell 找不到具有该名称的程序或命令,它会向您提供您描述的错误消息。
在编译的C程序中,语句运行后没有返回"codes"。程序中只有状态变化。例如,如果语句是 i = i + 1;
,则 i
的值比语句 运行.
之前的值大 1
Unix 进程总是 return 一个值:它们的退出代码;之所以这样命名,是因为大多数程序都以调用 exit
结束(还有其他可能性,但此处不重要)。请注意 所有 处理 return 这样的代码,而不是 大多数 。 Shell 解释用户键入的行并将它们转换为进程。当进程终止时,shell 会让您知道它控制的最后一个进程的 return 代码的值。在 bash 中,这个变量是 $?
。如果要打印,可以使用echo $?
。如果您键入 $?
它将把它解释为命令,但 127
(最后一个命令的退出值)不是命令。标准是 return 值为 0 表示正确终止进程,任何非空值表示程序逻辑某处发生错误。
gdb 也启动进程(以控制它们)但是,执行一行代码并不是 运行 进程,因此在执行程序代码的一个步骤后没有退出代码。当您在 gdb 中执行时,终止进程的内容在内部 gdb 变量 $_exitcode
.
中可用,其退出代码可用
在 linux 终端中,我输入了命令 why (此命令不存在),并得到了此响应
No command 'why'found, did you mean:
....
why: command not found
获取退出代码,这是我输入的:
$?
并得到回复:
127: command not found
我假设当大多数命令 运行 时,它们 return 代码。 现在用gdb,在它执行被调试的C程序的下一行后,它return有代码吗?如果是这样,我如何获得这些代码(gdb 中的 $? 之类的命令? - 我没有在 man gdb 中找到文档这样的命令的页面。
*在任何情况下,gdb 都应该知道(并可能记录)该行是否成功执行,如果不成功,出了什么问题。
没有一行代码可以成功执行,至少与 shell 命令执行的方式不同。
当您在 shell 时,您输入的是内部 shell 命令或外部程序的名称。在外部程序的情况下,$?
的值是程序传递给 exit
系统调用的值。如果 shell 找不到具有该名称的程序或命令,它会向您提供您描述的错误消息。
在编译的C程序中,语句运行后没有返回"codes"。程序中只有状态变化。例如,如果语句是 i = i + 1;
,则 i
的值比语句 运行.
Unix 进程总是 return 一个值:它们的退出代码;之所以这样命名,是因为大多数程序都以调用 exit
结束(还有其他可能性,但此处不重要)。请注意 所有 处理 return 这样的代码,而不是 大多数 。 Shell 解释用户键入的行并将它们转换为进程。当进程终止时,shell 会让您知道它控制的最后一个进程的 return 代码的值。在 bash 中,这个变量是 $?
。如果要打印,可以使用echo $?
。如果您键入 $?
它将把它解释为命令,但 127
(最后一个命令的退出值)不是命令。标准是 return 值为 0 表示正确终止进程,任何非空值表示程序逻辑某处发生错误。
gdb 也启动进程(以控制它们)但是,执行一行代码并不是 运行 进程,因此在执行程序代码的一个步骤后没有退出代码。当您在 gdb 中执行时,终止进程的内容在内部 gdb 变量 $_exitcode
.