任何1可以告诉或显示在solaris机器上的gdb中设置endian little之前和之后任何程序行为的差异吗?
我想知道改变它的效果。
谢谢!
答案 0 :(得分:4)
在执行本机(而不是远程)调试时,从不必须设置字节顺序。
然而,您可以观察到这样做的不良影响:
(这是在Linux / x86机器上,但我希望你在Solaris / x86和Solaris / SPARC上得到类似的结果)。
int main()
{
int x = 0x1020304;
return x;
}
gdb -q a.out
Reading symbols from /tmp/a.out...done.
(gdb) b 4
Breakpoint 1 at 0x804835c: file t.c, line 4.
(gdb) r
Breakpoint 1, main () at t.c:4
4 return x;
(gdb) show endian
The target endianness is set automatically (currently little endian)
(gdb) p &x
$1 = (int *) 0xffffce60
(gdb) p/x *(int*)0xffffce60
$2 = 0x1020304
(gdb) set endian big
The target is assumed to be big endian
(gdb) p/x *(int*)0xffffce60
$3 = 0x4030201
答案 1 :(得分:2)
要完全回答您的问题,此设置对调试的程序完全没有任何影响,仅在gdb输出上,就像雇佣俄语已经说明的那样。