• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Делюсь опытом Примитивы для отладки, в т.ч. отладка стека вызовов

valerivp

Member
Приложенные модули упрощают вывод отладочных сообщений, в т.ч. позволяют логировать стек вызовов процедур - одна строка кода в начале функции и вы в консоли увидите сообщение как о входе в функцию, так и о выходе из функции. В том числе для вложеных функций, в которых есть такая же строка.
В логе вы увидите имя файла, функции и номер строки.

Примеры вызовов:

Код:
        DEBUG_PRINT(F("Relays state change:") << toBin(PrevState) << F(" > ") << toBin(NewState));
выведет:

Код:
\RelayController.cpp:ApplyRelayState:1033: Relays state change:00000000 > 11111111

Код:
#ifdef USE_FILES_EDIT
void HTTPserverClass::handleFileUpload(AsyncWebServerRequest *request, const String& filename, size_t index, uint8_t *data, size_t len, bool final) {
   //-----------------------------
    DEBUG_STACK_PRINT(filename << " " << index << " " << len);
   //-----------------------------
Код:
void HTTPserverClass::handleWiFiScan(AsyncWebServerRequest *request) {
   //-----------------------------
    DEBUG_STACK;
   //-----------------------------
    int8_t countNetworks = WiFi.scanComplete();
Код:
void HTTPserverClass::handleSetUserConfig(AsyncWebServerRequest *request) {
   //-----------------------------
    DEBUG_STACK;
   //-----------------------------
    if (ConfigStore.getDemoMode())
        return return403_DemoMode(request);
    if (request->hasArg(F("name")) && request->hasArg(F("password"))) {
        String result;
        String name = request->arg(F("name"));
        String password = request->arg(F("password"));
   //-----------------------------
        DEBUG_PRINT(F("name:") << name << F(",password:") << password);
   //-----------------------------
 

Вложения

Последнее редактирование:
Сверху Снизу