请参阅Debugging with GDB,格式d
将打印为带符号的十进制:
但是p/d 0xffffffff
给了我4294967295
,我希望该值应为-1
代替:
(gdb) p/x -1
+p/x -1
$1 = 0xffffffff
(gdb) p/d 0xffffffff
+p/d 0xffffffff
$2 = 4294967295
(gdb) p/u 0xffffffff
+p/u 0xffffffff
$3 = 4294967295
(gdb)
为什么p / d和p / u都返回4294967295
?我该如何打印输出带符号的十进制-1
?
答案 0 :(得分:1)
为什么p / d和p / u都返回4294967295
当您提供GDB 0xFFFFFFFF
输入时,会将其视为unsigned int
。您可以使用whatis
:
(gdb) p -1
$1 = -1
(gdb) p/d $1
$2 = -1
(gdb) p/u $1
$3 = 4294967295
(gdb) p/x $1
$4 = 0xffffffff
(gdb) whatis $1
type = int
(gdb) p/d 0xFFFFFFFF
$5 = 4294967295
(gdb) whatis $5
type = unsigned int