GDB - установить переменную без типа - PullRequest
0 голосов
/ 08 июня 2018

Я хочу установить переменные и сравнить их (if $var1 == $var2)

set $var1 = myvar.x
set $var2 = myvar.y

Тип $var1 отличается от типа var2.(Мой двоичный файл скомпилирован с помощью ICC - компилятор Intel с прямым порядком байтов)

var1- (struct demo * __be)
var2 -(__be struct demo *)

Теперь, если я сравню $var1 с $var2, я получу, что он отличается, хотя его значение одинаково.

Приведение также не работает:

set $var2 = (struct demo *) (myvar.y)
(gdb) p $var2
$22 = (struct demo * __be) 0xabcdef
(the __be still exist)

Как я могу игнорировать тип?

1 Ответ

0 голосов
/ 08 июня 2018

Предполагая, что __be является своего рода собственным сокращением для __attribute__((bigendian)), и что нативная архитектура имеет младший порядок, тогда var1 - это указатель на структуру (содержащая младшие порядковые значения) со значением указателя, сохраненным как большой порядковый номерв то время как var2 - это указатель на структуру (содержащая значения с прямым порядком байтов) со значением указателя, сохраненным в виде байта с прямым порядком байтов.

Я не думаю, что есть способ сравнить их напрямую.Сначала вам придется преобразовать их значения в один и тот же порядок байтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...