GDB不会以带符号的十进制打印输出

时间:2016-05-09 15:58:20

标签: 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

1 个答案:

答案 0 :(得分:2)

我无法找到相关文档,但它看起来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