我今天被gdb
以下人员措手不及:
Program exited with code 0146.
gdb
以八进制打印返回代码; 调查为什么找到了我:http :
//comments.gmane.org/gmane.comp.gdb.devel/30363
但这并不是一个特别令人满意的答案。一些快速谷歌搜索并没有揭示历史,所以我希望SO上的某个人可能知道背景故事。
一个有点相关的问题,如何看待八进制的返回码?也许旧机器总是打印返回码?
$ printf %o\\n $?
很尴尬:)
退出状态可以大于一个数字,实际上是一个字节。同样,
—
jlliagre
man ascii
将八进制转换为十进制也没有用。bc
会是一个更好的选择。
返回码是数字,而不是十进制或八进制。程序返回一个状态(一个字节)。使用wait(3)或它的部落,父进程可以找到很多有关进程为什么退出的信息(通常,即,自愿通过调用exit(2);被信号杀死...)
—
vonbrand
$?
是shell对返回码值,是一个十进制数(或不支持GDB的例子也是在cmd?)。不知道为什么gdb以八进制报告它。我的解决方案是找出'olman ascii
以查看八进制值的含义。有趣的问题,因为您也会遇到其他程序的八进制值。也许在Kernighan和Pike的“ Unix编程环境”中进行了讨论。祝好运。