Создать отладочную IDE для проприетарного языка

Я использую довольно очевидный проприетарный язык под названием WIL/Winbatch, в котором была ужасная IDE (студия winbatch).

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

2 ответа

Побывав там и успешно выполнив задание, нужно помнить следующее:

  1. Создайте его как плагин / расширение для IDE, с которым ваша команда уже знакома и любит. Они будут благодарны вам за предоставленный интерфейс, соответствующий тому, что они действительно знают, как использовать, плюс вы можете полностью сосредоточиться на функциях, которые отличают ваш язык от других.
  2. Вам нужно будет изучить протокол отладки для вашего языка. В нашем случае мы имели исходный доступ к среде выполнения для интерпретируемого языка. В других случаях вы можете найти документацию для локального или удаленного интерфейса отладки GDB, библиотеку, с которой вы можете связать протоколы отладки языка, или, возможно, даже выяснить, как выглядят стеки вызовов, и обернуть API отладки Windows, чтобы проанализировать его за сцены.
  3. Не создавайте сверх того, что обеспечивает язык. Добавление функций отладки занимает много времени, и они имеют довольно раздражающую привычку к необходимости значительного изменения или полного переписывания по мере обновления версий целевого языка.

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

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

Другие вопросы по тегам