Объясните недопустимую ошибку JUMP [дубликат]

Есть ряд вопросов по invalid JUMPошибке.

Я получаю это при отладке контракта solidiy на testrpc с помощью командной строки geth:

Error: VM Exception while processing transaction: invalid JUMP at 3802e3b6eefb98
150918c4ddfaabf93c18d6c41aaa2682c5cdbc0a9a9a6a2853/cb611bab0cd7c4f21f7cb0b91ad45
f1330995289:13717
    at web3.js:3119:20
    at web3.js:6023:15
    at web3.js:4995:36
    at web3.js:4055:16
    at apply (<native code>)
    at web3.js:4141:16
    at <anonymous>:1:1

Можете ли вы объяснить ошибку invlid JUMP - что происходит не так на уровне кода операции виртуальной машины?

Какой подход следует использовать при поиске источника таких ошибок?

Эта ошибка уникальна для go-ethereum?

РЕДАКТИРОВАТЬ:

Ответ на вопрос здесь:

Что означает ошибка «bad JUMPDEST»?

В чем разница, если она есть, между вышеизложенным invlaid JUMPи этим вопросом bad JUMPDEST?

Другие вопросы:

oraclize «Исключение виртуальной машины: неверный JUMP»

Исключение VM: неверный JUMP при вызове второй функции

недействительный JUMP после обновления truffle и testrpc

Недопустимая ошибка назначения перехода при попытке передачи токенов DAO

Вот о чем я думал.
@eth да, это хороший ответ. Я предполагаю, что "invalid JUMP" является оболочкой geth для "bad JUMPDEST" в этом вопросе?
Да, это одно и то же

Ответы (1)

На самом деле это сообщение об ошибке testrpc . Если транзакция вызывает geth, она расценит это как ошибку отсутствия газа и не сообщит вам об этом. (Это связано с тем, что технически это ошибка отсутствия газа.)

К сожалению, не так много современных инструментов отладки. У Browser-Solidity есть такой. Мой собственный метод отладки такого типа довольно хладнокровен. Медленно комментируйте/возвращайтесь раньше, пока не получите недопустимый ПРЫЖОК. Если вы прокомментировали всю функцию, это может быть платная функция, но не payable.