Можно ли заставить Eclipse сохранять точные номера строк для скомпилированных классов Java? - PullRequest
0 голосов
/ 17 мая 2018

Большинство скомпилированных классов в моем проекте eclipse имеют номера строк и псевдостроки, которые выглядят так:

enter image description here

В приведенном выше случае, если я хочу установить точку останова для буквальной строки с номером 691 (то есть String METHODNAME = "executeAction";, то мне нужно фактически установить точку останова на строке 599 вверх по файлу. Если эта строка пуста на самом деле невозможно установить точку останова на этой строке.

Это делает проблемы отладки довольно головной болью, а иногда и просто невозможной, если они выстраиваются неудачным образом. Я действительно не понимаю, почему это происходит, но я предполагаю, что он пытается повысить скорость за счет простоты отладки, и затмение делает все возможное, чтобы перепроектировать компиляцию. Или что-то на это влияющее.

Есть ли способ, которым я могу перекомпилировать все эти классы, заставляя Eclipse сохранять исходные номера строк, чтобы я мог эффективно отлаживать проблемы в моей локальной среде?

1 Ответ

0 голосов
/ 17 мая 2018

Я предполагаю, что реальный вопрос заключается в следующем: это декомпилированный исходный код, и вам интересно, сможете ли вы научить Eclipse сопоставлять строчные номера декомпилированного источника с местоположениями в файле .class?

Тогда ответ - нет. Лучшее, что вы можете сделать в этом примере, это установить вместо этого точку останова входа метода, которая не зависит от номера строки (но учтите, что из-за ограничений jvm этот тип точки останова может замедлить выполнение)

Если рассматриваемый код является открытым исходным кодом, попробуйте загрузить соответствующую исходную версию. В противном случае вы можете попытаться отредактировать декомпилированный код так, чтобы фактические номера строк соответствовали исходным номерам строк как можно лучше.

...