Ребята из Mailgun представили новинку кроссплатформенный отладчик для Go , в котором используется оригинальная технология, совершенно отличная от стандартных подходов.
Забегая вперед, с помощью Gopherjs этот отладчик работает даже в браузере.
вступление
Все, что стоит на пути [хорошего отладчика Go] — это написание большого количества непереносимого низкоуровневого кода, взаимодействующего с глючными недокументированными интерфейсами.Поддержка Go уже давно была в отладчике gdb, но ее еще много осталось небольшие, но неприятные проблемы , что не давало возможности полноценно его использовать.—Роб Пайк
Также есть проект копаться , но выводы о его популярности пока сделать сложно.
В любом случае, «классические» подходы к написанию отладчика Go неизменно сталкивались со сложностью реализации, особенно когда речь идет о специфичных для Go вещах, таких как горутинная отладка.
Совершенно иной подход применил Джереми Шлаттер из компании Mailgun, довольно активно использующей Go — он взял за основу ту же идею, которая лежит в основе инструмента покрытия Go, встроенной системы тестирования и некоторых других: изменение кода на лету.
перед компиляцией.
Такой подход вообще стал возможен благодаря двум основным моментам — огромной скорости компиляции и простой грамматике языка.
Встроенные в stdlib инструменты для разбора грамматики Go (go/ast и go/parser) позволяют довольно легко модифицировать код скомпилированной программы на лету, и это открывает совершенно новый пласт возможностей.
Пример
Например, возьмем простую программу на Go:Теги: #Go #debug #отладка #Gopackage main import "fmt" func hello(text string) {
-
Программное Обеспечение Для Веб-Дизайна
19 Oct, 24 -
Как Изменить Тему Wordpress?
19 Oct, 24 -
Пекин И Москва — Мировые Столицы Спамеров
19 Oct, 24 -
Last.fm Снова Бесплатен?
19 Oct, 24 -
Что Делать С Чужими Долгами?
19 Oct, 24