Александр
ребята у меня в esp32 есть утечка памяти. как бы так выявить где по быстрее))
Ruslan
Илфат
Так что чем это лучше esp32-cam - сказать сложно
ну esp32-cam ещё програмить придётся самому
Max
Амбарела там. Но не факт, что именно в єтой.
Вряд ли. Амбарела дорогая для камеры в 200 рублей.
RealAI
Вряд ли. Амбарела дорогая для камеры в 200 рублей.
Смотря какая амбарела и сколько сотен тысяч говноюнитов планируется продать в год.
Serjio
так проще попросить выдать несколько картинок сюда)
Илфат
так проще попросить выдать несколько картинок сюда)
в обзоре на вскрытии аналогичной камеры видно было видно маркировку чипа EP7944
Илфат
хотя гугл ничего про это не смог сказать. Ладно. Чё гадать. Дома поснифирю да вскрою...
Serjio
даже не гуглится
Uladzimir
Serjio
это с такой камеры?
Александр
Посчитать пары выделения и освобождения памяти?
Выявил что использование библиотеки sd карты из примера вызывает утечеку. Если вынуть сд карту во время работы память высвобождается
Александр
Обратно подключить - занимается вновь
Алексей
Постоянно растёт занятая память?
Александр
Если освобождается вновь, то это не утечка.
Вот. Растет на количество дописываемых данных в файл. При этом то что ранее было уже записано не подгружается в память.
Александр
Ранее - это до перезагрузки например
Александр
Где-то ты нам лукавишь
void appendFile(fs::FS &fs, const char * path, const char * message){ Serial.printf("Appending to file: %s\n", path); sdwr="[SD: Write failed]"; File file = fs.open(path, FILE_APPEND); if(!file){ if (D_bug==true) { Serial.println("Failed to open file for appending"); } } if(file.print(message)){ sdwr="[SD: Write OK]"; if (D_bug==true) { Serial.println("Message appended"); } } else { if (D_bug==true) { Serial.println("Append failed"); } } file.close(); }
Александр
Александр
Александр
до того как вынул карту и после. результат
Александр
пытаюсь разобраться в библиотеке
Александр
пока не понимаю
Lynici
Говнокод
Lynici
Elseif
Lynici
Switch/case
Александр
вызываю так
Александр
log_file=log_file+String(token)+"\n"; //tim const char *wr_log = log_file.c_str(); appendFile(SD, "/log.csv", wr_log);
Lynici
Твои if это так же отстойно, как и не знать про пастебин
Александр
ну маленький же кусочек
ну маленький же кусочек
Так что тебя смущает? ЧТо несколько кб выделилось и все?
смущает что к утру зависло))
А к утру сколько было?
Александр
может быть вызывать каждый раз begin и end до и после дописывания в файл. я только при старте в setup вызывал begin и ни разу end
Александр
А к утру сколько было?
не знаю. зависло же
не знаю. зависло же
Так узнай почему зависло
С чгео ты взял что проблема во фреймворке ардуино а не в твоем говнокоде?
Александр
С чгео ты взял что проблема во фреймворке ардуино а не в твоем говнокоде?
потому что мой говнокод слишком простой что бы так тупить)
а это ничего, что "Append failed" никогда не напишется?
Да похуй. Код простой то. Он даже таких ошибок не замечает. Я не стал на этом акцентировать внимания
Так что все же ищи бревно в своем коде, чем соринку в крупных фреймворках которые пишут коммюнити. Тысячи человек то не знали же что у них такой баг
Александр
А тебя еще не смущает что ты делаешь file.close не проверив выделился ли указатель file? То есть фактически если опен не сработал то ты пытаешься его закрыть
А ну да. Код же слишком простой. Боюсь представить какие ошибки там дальше
Александр
Александр
специально для тех кто слишком умный)
специально для тех кто слишком умный)
Ты слишком умный тогда выложи код нормально тебе сказали на пастебин и отформатируй его не как КУСОК дерьма. Потому что " if (D_bug==true) " дважды и после елсе нихуя не понятно что там еще одна скобка открывается и ELSE там уже идет до другого.
Если ты хочешь услышать мнение других людей то приведи код в читаемый вид. А то выглядит как полнейшее неуважение
В.В. (*_*)
Скажите у кого-нибудь из вас есть опыт с N52832?
SSR
Или #гблог
iҚØN🐾🐾
Я уже спрашивал. Но это, по ходу, совершенно не то.
О, я когда-то на короне писал))) но оно такое себе, специфичное)
SSR
#борьбассдкартой
Мне кажется там #борьбасоздравымсмыслом
Я не понял как он нашел связь между занятой оперативкой когда он пихает карту (логично что драйвер делает аллок буфера) и то что виснет есп
И почему это называется утечкой?
iҚØN🐾🐾
log_file=log_file+String(token)+"\n"; //tim const char *wr_log = log_file.c_str(); appendFile(SD, "/log.csv", wr_log);
Вот люди не хотят учиться же. У тебя утечка на log_file.c_str();
iҚØN🐾🐾
appendFile(SD, "/log.csv", log_file.c_str());
iҚØN🐾🐾
И все
appendFile(SD, "/log.csv", log_file.c_str());
Не уверен. C_str вроде просто возвращает ссылку на буфер
Если нет, то пусть выводит при каждом аппенде в лог остаток памяти
iҚØN🐾🐾
wstr.c_str() returns a pointer to a buffer that's managed by the wstring object. It will be deallocated when the string is destroyed, after which the pointer will no longer be valid. Using delete on this is wrong. The pointer will also be invalidated if you modify the string.
Ну да
Как я и сказал
iҚØN🐾🐾
А аллоцированная память осталась
Нет
Это не так работает
Он возвращает свой текущий буфер
iҚØN🐾🐾
Не нет, а да. Пусть так сделает и перестанет течь
Он сам его удалит когда декструктор сработает
Ты сам почитай что прислал
iҚØN🐾🐾
Это когда сработает
Так у него она глобальная
Оно не меняется