Создать отладочную IDE для проприетарного языка
Я использую довольно очевидный проприетарный язык под названием WIL/Winbatch, в котором была ужасная IDE (студия winbatch).
Я хотел бы разработать альтернативную среду; однако, без возможности устанавливать точки останова, шагать и проверять переменные, в действительности нет никакого смысла. Как начать исследование того, как реализовать отладчик для проприетарного языка? Это даже законно? Я предполагаю, что я как бы зациклен на том, что часть отладчика должна быть в состоянии проверять операторы, которые предоставляются ей в WIL по мере их выполнения, верно? Так как-то я должен поймать вывод интерпретатора? Или это просто вопрос чтения мест в памяти на любом языке? Заранее спасибо.
2 ответа
Побывав там и успешно выполнив задание, нужно помнить следующее:
- Создайте его как плагин / расширение для IDE, с которым ваша команда уже знакома и любит. Они будут благодарны вам за предоставленный интерфейс, соответствующий тому, что они действительно знают, как использовать, плюс вы можете полностью сосредоточиться на функциях, которые отличают ваш язык от других.
- Вам нужно будет изучить протокол отладки для вашего языка. В нашем случае мы имели исходный доступ к среде выполнения для интерпретируемого языка. В других случаях вы можете найти документацию для локального или удаленного интерфейса отладки GDB, библиотеку, с которой вы можете связать протоколы отладки языка, или, возможно, даже выяснить, как выглядят стеки вызовов, и обернуть API отладки Windows, чтобы проанализировать его за сцены.
- Не создавайте сверх того, что обеспечивает язык. Добавление функций отладки занимает много времени, и они имеют довольно раздражающую привычку к необходимости значительного изменения или полного переписывания по мере обновления версий целевого языка.
Почему вы так тесно связаны с этим языком? Если это не очень хорошо поддерживается, есть много других, которые вы можете использовать. В любом случае, чтобы ответить на ваш вопрос, сложность зависит от того, является ли это скомпилированным или интерпретированным языком и есть ли у вас доступ к какому-либо исходному коду (что, конечно, кажется, что у вас нет). Тем не менее, это будет очень сложный проект, так как вам придется перепроектировать скомпилированный код, чтобы он имел какое-то значение. Ваше время было бы лучше потратить на изучение другого (лучшего) языка.
Возможно, если вы сможете дать нам представление о том, почему вы хотите использовать этот язык, мы могли бы вам помочь?