Странный вывод при проверке переменных с LLDB - PullRequest
0 голосов
/ 12 июня 2018

Я отлаживаю клиент Parity Ethereum с LLDB в VSCode и пытаюсь получить доступ к значению через несколько ссылок.

Вот код только с соответствующими частями (полный код здесь )

pub struct SignedTransaction {
    transaction: UnverifiedTransaction,
    sender: Address,
    public: Option<Public>,
}

impl Deref for SignedTransaction {
    type Target = UnverifiedTransaction;
    fn deref(&self) -> &Self::Target {
        &self.transaction
    }
}

pub struct UnverifiedTransaction {
    unsigned: Transaction,
    v: u64,
    r: U256,
    s: U256,
    hash: H256,
}

impl Deref for UnverifiedTransaction {
    type Target = Transaction;

    fn deref(&self) -> &Self::Target {
        &self.unsigned
    }
}

pub struct Transaction {
    pub nonce: U256,
    pub gas_price: U256,
    pub gas: U256,
    pub action: Action,
    pub value: U256,
    pub data: Bytes,
}

pub enum Action {
    Create,
    Call(Address),
}

У меня есть &SignedTransaction t со значением t.action = Action::Create (проверено вручную).

Я хочу получить значение action, так как VSCode показываетвводящее в заблуждение значение:

VSCode, показывающее вводящее в заблуждение значение

Мне не удается вывести только значение action, но команда p t.transaction выводит это (усечено):

(ethcore_transaction::transaction::UnverifiedTransaction) $2 = {
unsigned = {
    action = Call(((20) ['\', '!', '\xf6', '\xff', '\x7f', '\0', ...])) {
    = Call(((20) ['\', '!', '\xf6', '\xff', '\x7f', '\0', ...])) {
        RUST$ENUM$DISR = Create {...}

В случае, если t.action = Action::Call() значение отображается правильно.

Почему оно не показывает action = Create?Как я могу печатать более чисто action значение?

РЕДАКТИРОВАТЬ: команда fr v t->transaction.unsigned.action.RUST$ENUM$DISR показывает правильное значение перечисления.Однако я до сих пор не знаю, почему fr v t->transaction.unsigned.action отображает неправильные значения (которые также отображаются в графическом интерфейсе).

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