Нужна информация о "set endian" на машине соляриса - PullRequest
0 голосов
/ 17 мая 2010

Может ли кто-нибудь 1 сказать или показать разницу в поведении любой программы до и после того, как я "установил endian little" в gdb на машине солярис?

Я хочу знать эффект от его изменения.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 18 мая 2010

Вы должны никогда устанавливать порядковый номер при выполнении нативной (в отличие от удаленной) отладки.

Однако вы можете наблюдать вредные последствия этого:

(Это на компьютере с 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
2 голосов
/ 19 мая 2010

Чтобы полностью ответить на ваш вопрос, этот параметр не окажет абсолютно никакого влияния на отлаженную программу, а только на вывод gdb, как уже было сказано в Employed Russian.

...