GDB 不以有符号十进制打印输出

标签 gdb

我正在尝试使用gdb 来做一些数学运算。看看这两个转换

gdb$ p/x -8
$8 = 0xfffffff8
gdb$ p/d 0xfffffff8
$9 = 4294967288

为什么在第二种情况下 gdb 不返回 -8 而不是数字的无符号值? 事实上,p/dp/u

之间根本没有区别
gdb$ p/u 0xfffffff8
$10 = 4294967288

最佳答案

我找不到这方面的文档,但看起来 gdb 中整数值的默认类型是 64 位有符号整数。看这个:

(gdb) p/d 0xfffffffffffffff8
$7 = -8

因此它将 0xfffffff8 解释为 (int64_t) 0x00000000fffffff8,这是一个正值。

您正在寻找这个:

(gdb) p/d (int)0xfffffff8
$9 = -8
(gdb) p/u (int)0xfffffff8
$10 = 4294967288

关于GDB 不以有符号十进制打印输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37120303/

相关文章:

c++ - gdb (cpp) 中符号使用中断

C 程序在 Cygwin 中运行但在 Linux (Malloc) 中不运行

xcode - 如何通过 OS X 上的系统库进行调试?

linux - gdb 地址太短

c - 将输出从 gdb 重定向到一个文件

gdb - 如何在gdb中打印wstring

linux - 远程调试gdb多进程

debugging - 如何在附加 gdb 的情况下运行 R 脚本?

linux - 如何使用 gdb 在当前指令指针之前(上一个)打印指令?