Skip to content

Commit 2939b69

Browse files
committed
Better debug prints
1 parent c386a90 commit 2939b69

File tree

2 files changed

+22
-21
lines changed

2 files changed

+22
-21
lines changed

src/WebRequest.cpp

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,11 @@ static const String SharedEmptyString = String();
3232

3333
enum { PARSE_REQ_START, PARSE_REQ_HEADERS, PARSE_REQ_BODY, PARSE_REQ_END, PARSE_REQ_FAIL };
3434

35-
36-
namespace {
37-
template<typename T>
38-
static void DEBUG_PRINT(const __FlashStringHelper* str, T arg) {
39-
Serial.print(str); Serial.print(arg); Serial.print(F(", heap ")); Serial.println(ESP.getFreeHeap());
40-
}
41-
};
42-
35+
#ifdef ASYNCWEBSERVER_DEBUG_TRACE
36+
#define DEBUG_PRINTFP(fmt, ...) Serial.printf_P(PSTR("[%d]{%d}" fmt "\n"), millis(), ESP.getFreeHeap(), ##__VA_ARGS__)
37+
#else
38+
#define DEBUG_PRINTFP(...)
39+
#endif
4340

4441
AsyncWebServerRequest::AsyncWebServerRequest(AsyncWebServer* s, AsyncClient* c)
4542
: _client(c)
@@ -78,7 +75,7 @@ AsyncWebServerRequest::AsyncWebServerRequest(AsyncWebServer* s, AsyncClient* c)
7875
, _itemIsFile(false)
7976
, _tempObject(NULL)
8077
{
81-
DEBUG_PRINT(F("WR created "), (intptr_t)this);
78+
DEBUG_PRINTFP("(%d) WR created", (intptr_t)this);
8279
c->onError([](void *r, AsyncClient* c, int8_t error){ (void)c; AsyncWebServerRequest *req = (AsyncWebServerRequest*)r; req->_onError(error); }, this);
8380
c->onAck([](void *r, AsyncClient* c, size_t len, uint32_t time){ (void)c; AsyncWebServerRequest *req = (AsyncWebServerRequest*)r; req->_onAck(len, time); }, this);
8481
c->onDisconnect([](void *r, AsyncClient* c){ AsyncWebServerRequest *req = (AsyncWebServerRequest*)r; req->_onDisconnect(); delete c; }, this);
@@ -88,7 +85,7 @@ AsyncWebServerRequest::AsyncWebServerRequest(AsyncWebServer* s, AsyncClient* c)
8885
}
8986

9087
AsyncWebServerRequest::~AsyncWebServerRequest(){
91-
DEBUG_PRINT(F("WR destructing "), (intptr_t)this);
88+
DEBUG_PRINTFP("(%d) WR destructing", (intptr_t)this);
9289

9390
_headers.free();
9491

@@ -109,7 +106,7 @@ AsyncWebServerRequest::~AsyncWebServerRequest(){
109106
_tempFile.close();
110107
}
111108

112-
DEBUG_PRINT(F("WR destructed "), (intptr_t)this);
109+
DEBUG_PRINTFP("(%d) WR destructed", (intptr_t)this);
113110
}
114111

115112
void AsyncWebServerRequest::_onData(void *buf, size_t len){
@@ -583,7 +580,7 @@ void AsyncWebServerRequest::_parseLine(){
583580
if(!_temp.length()){
584581
//end of headers
585582
_server->_rewriteRequest(this);
586-
DEBUG_PRINT(F("WR ready "), (intptr_t) this);
583+
DEBUG_PRINTFP("(%d) WR ready %s", (intptr_t) this, url().c_str());
587584
_server->_attachHandler(this);
588585
_removeNotInterestingHeaders();
589586
if(_expectingContinue){

src/WebResponses.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@
2222
#include "WebResponseImpl.h"
2323
#include "cbuf.h"
2424

25+
#ifdef ASYNCWEBSERVER_DEBUG_TRACE
26+
#define DEBUG_PRINTFP(fmt, ...) Serial.printf_P(PSTR("[%d]" fmt), millis(), ##__VA_ARGS__)
27+
#else
28+
#define DEBUG_PRINTFP(...)
29+
#endif
30+
2531
// Since ESP8266 does not link memchr by default, here's its implementation.
2632
void* memchr(void* ptr, int ch, size_t count)
2733
{
@@ -285,6 +291,7 @@ static void dealloc_vector(T& vec) {
285291

286292
size_t AsyncAbstractResponse::_ack(AsyncWebServerRequest *request, size_t len, uint32_t time){
287293
(void)time;
294+
DEBUG_PRINTFP("(%d) ack %d\n", (intptr_t) this, len);
288295

289296
if(!_sourceValid()){
290297
_state = RESPONSE_FAILED;
@@ -344,14 +351,13 @@ size_t AsyncAbstractResponse::_ack(AsyncWebServerRequest *request, size_t len, u
344351
auto old_space = _packet.capacity();
345352
auto max_block_size = ESP.getMaxFreeBlockSize() - 128;
346353
if ((old_space < outLen) || (outLen > max_block_size)) {
347-
Serial.printf_P(PSTR("Space adjustment, have %d, want %d, avail %d\n"), old_space, outLen, max_block_size);
354+
DEBUG_PRINTFP("(%d) Space adjustment, have %d, want %d, avail %d\n", (intptr_t)this, old_space, outLen, max_block_size);
348355
do {
349356
dealloc_vector(_packet);
350-
Serial.printf_P(PSTR("Released buffer - capacity %d\n"), _packet.capacity());
351357
outLen = std::min(outLen, max_block_size);
352358
_packet.resize(outLen);
353359
max_block_size = ESP.getMaxFreeBlockSize() - 128;
354-
Serial.printf_P(PSTR("Checking %d vs %d\n"), outLen, max_block_size);
360+
DEBUG_PRINTFP("(%d) Checking %d vs %d\n", (intptr_t)this, outLen, max_block_size);
355361
} while (max_block_size < outLen);
356362
} else {
357363
_packet.resize(outLen);
@@ -390,18 +396,16 @@ size_t AsyncAbstractResponse::_ack(AsyncWebServerRequest *request, size_t len, u
390396
if(_packet.size()){
391397
auto acceptedLen = request->client()->write((const char*)_packet.data(), _packet.size());
392398
_writtenLength += acceptedLen;
393-
_packet.erase(_packet.begin(), _packet.begin() + acceptedLen); // TODO - does this realloc??
399+
_packet.erase(_packet.begin(), _packet.begin() + acceptedLen);
394400
if (acceptedLen < outLen) {
395401
// Save the unsent block in cache
396-
Serial.print(F("Incomplete write, ")); Serial.print(acceptedLen); Serial.print("/"); Serial.println(outLen);
397-
Serial.print(F("Heap: ")); Serial.print(ESP.getMaxFreeBlockSize()); Serial.print("/"); Serial.println(ESP.getFreeHeap());
398-
Serial.println(request->client()->space());
402+
DEBUG_PRINTFP("(%d) Incomplete write, %d/%d\nHeap: %d/%d\nSpace:%d\n", (intptr_t) this, acceptedLen, outLen, ESP.getMaxFreeBlockSize(), ESP.getFreeHeap(), request->client()->space());
399403
// Try again, with less
400404
acceptedLen = request->client()->write((const char*)_packet.data(), _packet.size()/2);
401405
_writtenLength += acceptedLen;
402-
_packet.erase(_packet.begin(), _packet.begin() + acceptedLen); // TODO - does this realloc??
403-
Serial.println(acceptedLen);
406+
_packet.erase(_packet.begin(), _packet.begin() + acceptedLen);
404407
}
408+
DEBUG_PRINTFP("(%d) Accepted: %d\n", (intptr_t) this, acceptedLen);
405409
}
406410

407411
if( (_chunked && readLen == 0) // Chunked mode, no more data

0 commit comments

Comments
 (0)