Jump to content

    

VS Code + gcc/gdb

https://www.google.ru/?q=PlatformIO

Просто нажать ENTER

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

 

Share this post


Link to post
Share on other sites
Да я вчера посмотрел, но так и не понял и зачем нужна эта полуплатная хрень, с непонятной регистрацией, заточенная, как я понял, под ардуино?

Ардуино там не сильно причем. Насчет платности не заметил.

Нужна примерно за тем же, что и остальные IDE.

Share this post


Link to post
Share on other sites

У меня так и не работает полноценно отладка:

  • во время работы программы не получается остановить выполнение нажатием на кнопку "пауза".
  • во время работы программы не получается установить брейкпоинты. Точнее, на них не происходит остановка выполнения.
  • иногда не выключается с первого раза отладка. Со второго раза отладка останавливается, но к openocd после этого не подключиться - приходится перезапускать openocd.

Через telnet команда halt отрабатывает нормально.

 

Так понял, на все эти проблемы открыты issue на https://github.com/Microsoft/vscode-cpptools

 

STM32f205, gcc-4.8.4, cmake, vs code 1.13.1, openocd-0.10.0, macOS 10.12.5

Share this post


Link to post
Share on other sites
Ардуино там не сильно причем. Насчет платности не заметил.

Нужна примерно за тем же, что и остальные IDE.

Ну если то же самое делается без привлечения лишних сущностей, то вопрос зачем PlatformIO так и не раскрыт... Ну разве что есть желание отправлять телеметрию разработчикам :)

 

У меня так и не работает полноценно отладка:

  • во время работы программы не получается остановить выполнение нажатием на кнопку "пауза".
  • во время работы программы не получается установить брейкпоинты. Точнее, на них не происходит остановка выполнения.
  • иногда не выключается с первого раза отладка. Со второго раза отладка останавливается, но к openocd после этого не подключиться - приходится перезапускать openocd.

Странно у меня все работает, покажите launch.json. Какие версии у Вас VS Code и cpptools? Почему gcc такой старый (очень может быть, что проблема в этом)?

 

Можно в launch.json добавить:

 "logging": 
         {
            "engineLogging":true,
         },

 

И посмотреть, где возникает проблема с обменом между отладчиком и IDE.

 

У меня последние версии VS Code/cpptools и последняя версия gcc с ARM-developer. Проблем с отладкой нет, в последней версии даже пофиксили мелкие неудобства.

 

Есть проблемы по части IntelliSense (точнее новой его реализации), я об этом общался с разработчиками - пока причину не нашли. Впрочем меня и старый вариант IntelliSense вполне устраивает.

Share this post


Link to post
Share on other sites

Смена версии gcc до 6.3.1 не повлияла на результаты.

launch.json:

{"configurations": [

     {
        "name": "OpenOCD & gdb",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceRoot}/build/Src/Aurora",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceRoot}",
        "environment": [],
        "externalConsole": false,
        "logging": {
           "engineLogging":false,
           "moduleLoad": true,
           "exceptions": true
        },
        "preLaunchTask": null,
        "osx": {
           "MIMode": "gdb",
           "miDebuggerPath":"/opt/local/arm-toolchain/bin/arm-none-eabi-gdb",            
           "setupCommands": [
                 {"text":"-target-select remote localhost:3333"},
                 {"text":"-interpreter-exec console \"monitor reset halt\""},
                 {"text":"-interpreter-exec console \"monitor continue\""}
            ],
           "launchCompleteCommand": "exec-continue",
           "logging": {"engineLogging":true}

        }
     }
  ]
}

Версии VS Code 1.13.1, ms-vscode.cpptools 0.11.4

Так понимаю, проблема в реализации MIEngine под OSX.

Share this post


Link to post
Share on other sites
Так понимаю, проблема в реализации MIEngine под OSX.

По всему да (у меня даже чуть старее VSCode 1.12.2 и cpptools 0.11.4, launch.json без существенных отличий от моего). Если в баглисте на cpptools этой проблемы еще нет, то стоит написать. Я писал несколько раз, все исправили довольно оперативно (я правда принимал активное участие в локализации проблем), кроме последней проблемы с новым IntelliSense.

 

Не помню с какой версии, но теперь можно в launch.json setupCommands писать в виде обычных gdb команд, а не mi-команд - как по мне, так удобнее.

 

Кстати поддержка отладчиком Natvis-файлов очень классная вещь.

Edited by Шаманъ

Share this post


Link to post
Share on other sites
Ну если то же самое делается без привлечения лишних сущностей, то вопрос зачем PlatformIO так и не раскрыт...
Если это еще актуально, platformio отчасти решает некоторые наболевшие моменты по управлению проектом:
  • контроль и версионирование зависимостей
  • простота установки тулчейнов
  • обертки для автодетекта портов программаторов (приятно для разработчиков, и вдвойне приятно для конечных юзеров)
  • у них там есть еще какие-то платные навороты по автоматическому тестированию на реальных железках, но я туда не вникал - не надо
  • ну то что оно сразу умеет во все популярные stm32/avr/esp8266 - не знаю стоит ли выделять, в принципе это много кто умеет.
Если вас устраивает подчеркивать свое "разработческое мастерство", прописывая в репе зависимости субмодулями и ручками устанавливая компиляторы - вполне можно обойтись и без platformio. А если хочется чтобы любой сторонний разработчик с минимальными усилиями поднял среду на любой операционке и не отвлекался на суету - очень удобный вариант. Факстически, после того как откроете в paltformio проект, оно по конфигу само всосет все чего не хватало.

 

Короче, нужность зависит от задач проекта и ваших личных предпочтений. Я перечислил то что бросилось в глаза, а дальше решайте сами. У себя использую, доволен. Правда, не с VScode а с Atom, исторически сложилось.

 

Share this post


Link to post
Share on other sites

Вышел плагин

https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug

Работает отлично. Я использую jlink. Единственное что раздражает, что всезначнеи в десятичном виде. Но ятак понял это вопрсо не к плагину а к самой vs. 

Share this post


Link to post
Share on other sites
On 12/24/2018 at 3:13 PM, Andrey75 said:

Работает отлично.

Я бы не сказал. Я копался в коде - куча ошибок там, MI интерфейс сделан криво, очень криво. Хотел довести до ума, поисправлял некоторые ошибки, сделал частично отображение в шестнадцатеричной, двоичной, восьмеричной системе, но забросил, ибо глюков там очень много и некоторые очень существенные (типа неправильного показа памяти/периферии).

On 12/24/2018 at 3:13 PM, Andrey75 said:

Но ятак понял это вопрсо не к плагину а к самой vs.

Нет, это к плагину.

Share this post


Link to post
Share on other sites

Я не сталкивался с проблемами. Наверное просто они у меня не проявлялись.

Может законтрибьютите автору что уже сделали?

Share this post


Link to post
Share on other sites
On 1/2/2019 at 11:43 PM, Andrey75 said:

Я не сталкивался с проблемами. Наверное просто они у меня не проявлялись.

К сожалению я стаклкивался, и несколько раз. Пока не понял в чем дело это очень сильно затормозило работу. В итоге вернулся к прежним cpptools.

Копаясь в коде обнаружил очень странное именование переменных в командах посылаемых gdb. Это в ряде случаев приводит к неправильному отображению значений элементов массивов.

В итоге, как по мне, для проектов немного сложнее ""hello world" этот плагин может создать больше проблем, чем решить. Хотя задумка хорошая.

Может законтрибьютите автору что уже сделали?



Это несколько проблематично, т.к. у меня нет всего фреймворка (а устанавливать и настраивать нет времени), чтобы писать на TypeScript и потом компилировать в JavaScript и собирать плагин как положено, поэтому я прямо подредактировал выходной JavaScript (в принципе перенести изменения обратно в исходник на TypeScript не проблема). Т.е. мне нужно будет потратить определенное время, чтобы это сделать, которого у меня нет. Можно в принципе в обсуждении проекта на гитхабе сделать тему и выложить JavaScript файлы - пусть народ допиливает, но терзают меня сомнения, что кто-то будет это делать.

Если бы не фундаментальные проблемы с именованием элементов массивов/струтур в командах отсылаемых gdb, то можно было бы пилить этот плагин и дальше, а так думаю перспективнее приложить усилия к cpptools.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now