You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

gdb显示异常退出码咨询:为何显示033而非预期的27

GDB显示的进程退出码与实际不一致的原因

我编写了以下汇编代码:

section .data
.section .text
.globl _start
_start:
   movl $1,%eax
   mov $27,%ebx
   int $0x80

将其编译生成可执行文件后导入GDB运行,GDB输出:

[Inferior 1 (process 13321) exited with code 033]

但预期的退出码应该是27,而且直接运行该可执行文件后执行echo $?,输出确实是27。为什么GDB会有这种显示差异?


这是因为GDB默认以八进制格式显示进程的退出码,而shell的$?变量默认以十进制格式输出退出码。

你看到的033是八进制表示,转换成十进制就是27——和直接运行后得到的结果完全一致。八进制033的计算方式为:3*8^1 + 3*8^0 = 24 + 3 = 27,完全符合预期的退出值。

如果想让GDB用十进制显示退出码,可以在GDB中执行命令:

set output-radix 10

之后再运行程序,GDB就会直接显示十进制的退出码了。

内容的提问来源于stack exchange,提问作者user16713791

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 10:02:00