2010-07-12 33 views

回答

25

当你没有调试任何特定的代码时,gdb似乎会选择一些令人惊讶的默认值。如果您加载了一个64位可执行文件,如:gdb /bin/sh你得到一个,令人惊讶的少的结果:

(gdb) p sizeof(void *) 
$1 = 8 

你也可以明确告诉gdb来做些什么:

(gdb) show architecture 
The target architecture is set automatically (currently i386) 
(gdb) p sizeof(void *) 
$1 = 4 
(gdb) set architecture 
Requires an argument. Valid arguments are i386, i386:x86-64, i8086, i386:intel, i386:x86-64:intel, auto. 
(gdb) set architecture i386:x86-64 
The target architecture is assumed to be i386:x86-64 
(gdb) p sizeof(void *) 
$2 = 8 
+3

惊人。架构默认为i386。 我会报告这个错误... – 2010-07-12 21:26:29

相关问题