LINUX.ORG.RU

Go + Msys2/MinGW64 GDB + Eclipse: internal-error: Assertion `free_pendings == NULL'

 , , ,


1

2

Изучаю Го, есть проблемы.
Люди, которые тут клятвенно утверждали что в Гнусных утилитах не встречаются internal errors, можете тут побаттхертить :(

На всякий случай объясню, чтобы чье-то нежное сердце не порвалось: msys2 - это переписанный msys, основанный на современном cygwin и MinGW-w64. Работает на ядре Windows соответственно. Пакетный менеджер - pacman, тот что взят из милой сердцу ArchLinux. Словом, идеальная GNU\Windows система. GNU взят потому, что каждый честный человек должен пользоваться GNU. Windows потому что так сказал работодатель.

Собственно проблема в чем. Мне не нравится liteide, а Eclipse нравится очень. Поэтому первым делом я захотел настроить Eclipse для работы с Go на всех платформах. Для этого под Windows решено было установить Eclipse с плагином Goclipse.

Для запуска отладчика понадобился GDB. В факе Goclipse честно предупредили, что под виндой Сygwin лучше не использовать, а взять msys2 (тем более что это и есть фишка msys2). Там же честно предупредили, что брейкпоинты рабтоать будут, а просмотр переменных - нет (это меня не остановило - надо же проверить, вдруг уже исправили).

После основательного задротства по сборке Eclipse CDT со всеми плагинами и настройками (удовольствие сравнимое с поклейкой LFS), запускаем хэлловорлд со включенным брейкпоинтом, и шта же видим?

../../gdb-7.11.1/gdb/buildsym.c:1773: internal-error: buildsym_init: Assertion `free_pendings == NULL' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) [answered Y; input not from terminal]

This is a bug, please report it.  For instructions, see:
<http://www.gnu.org/software/gdb/bugs/>.


../../gdb-7.11.1/gdb/buildsym.c:1773: internal-error: buildsym_init: Assertion `free_pendings == NULL' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? This application has requested the Runtime to terminate it in an unusual way.
(y or n) [answered Y; input not from terminal]
Please contact the application's support team for more information.

На основе данных из гугла я попробовал подсунуть GDB параметры в конфигурации Eclipse CDT: создал текстовый файл .gdbinit, вписал туда строчку:

set args --interpreter=-mi2 -quiet

и прописал в Debug Configuration в Эклипсе. Но это либо не помогло, либо я неправильно понял синтаксис .gdbinit, либо это просто очередной баг в Эклипсе и она забыла прописать его при запуске GDB. Да и не должно это помочь, а просто заскринить одну из проблем.

Чтобы вы не думали, что я тунеядец и не погуглил, прежде чем задавать вопрос просветленным гурам:

  • Новейшее обсуждение за 2015 год: ссылка
    Резолюция: нет решения
  • Старое обсуждение за 2013 год, но не гошников а крестовиков: ссылка
    Резолюция: использовать «break __cxa_throw» вместо «catch throw». Непонятно, как это поможет в интерактивном дебаге Эклипсы.
  • Старый баг в оффтрекере Eclipse CDT, 2012 год: ссылка
    Резолюция: тикет все еще в статусе NEW
  • Старые баги в оффтрекере GDB, 2012 год: ссылка, ссылка
    Резолюция: первый тикет FIXED но видать в 2016 сломалось, второй тикет все еще в статусе NEW.

Что тут можно сделать? Здавайте ваши ответы!

С меня как всегда - ничего :)

Спасибо

★★★★☆

Во первых винда-проблемы. Во вторых использовать gdb для go моветон. Если так сильно нужна отладка, то есть godebug и delve.

pftBest ★★★★ ()

решение

Оказывается, Delve научился в Windows. Поэтому действия такие:

  1. go get -u -ldflags -H=windowsgui github.com/derekparker/delve/
  2. добавляем полученный экзешник в PATH.
  3. Устанавливаем IntelliJ IDEA
  4. Добавляем репозиторий плагинов: https://plugins.jetbrains.com/plugins/nightly/5047
  5. Устанавливаем плагин с именем Go, дескрипшеном «Support for Go programming language.» и урлом "https://github.com/go-lang-plugin-org"
  6. Всё просто работает
stevejobs ★★★★☆ ()
Ответ на: комментарий от pftBest

Goclipse для Eclipse не умеет в Delve, только в GDB. Решением стал переход на IntelliJ IDEA.

Но проблемы с критическим багом в GDB это никак не решает на самом деле... То что мы теперь используем что-то другое не означает, что есть решение для GDB :(

stevejobs ★★★★☆ ()
Последнее исправление: stevejobs (всего исправлений: 1)

Господин Пайк запретил использовать дебаггеры, подчиняйся, холоп.

Deleted ()
Ответ на: комментарий от trashymichael

существует какое-то «где-то еще»? Нечто подобное есть в IntelliJ Idea Ultimate, но я не могу ее использовать (должен быть 100% опенсорц)

stevejobs ★★★★☆ ()
Ответ на: комментарий от stevejobs

vim, atom, vscode etc

Хипстерскому языку - хипстерские инструменты.

(если серьезно, судя по свидетельствам большинство юзает текстовые редакторы с плагинами)

Midael ★★★★★ ()
Ответ на: комментарий от anonymous

Я в рабстве минимум до января, сорри, надо доделать работу. Тут надо было весной договариваться, но я прощелкал клешнями, теперь немного поздняк метаться.

В прорывные проектны на Го немного не верится, кстати. Исходя из того немногого что узнал, редкостно убогий язык и сырая платформа. В смысле, по сравнению с Java, C#, Haskell, итп. Сравнение нечестное, но что поделаешь, мир вообще не очень честное место

Собственно, чтобы довершить представление о Го и пытаюсь поднять инфраструктуру и сделать на нем что-нибудь настоящее. Может быть, все не так уж плохо.

stevejobs ★★★★☆ ()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

Посмотри liteide (https://github.com/visualfc/liteide). Все работает из коробки. Eдинственный замеченный косяк - тесты не стопаются кнопкой, но это не особо сильно напрягает (таскман-килл xxx.test.exe).

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.