DEBUG programu za běhu

Odpovědět
Uživatelský avatar
SkullKeep
Příspěvky: 313
Registrován: 23 srp 2017, 18:51
Bydliště: Brno
Kontaktovat uživatele:

DEBUG programu za běhu

Příspěvek od SkullKeep » 25 bře 2025, 19:13

Dneska jsem díky AI vytvořil DEBUG pro zjištění chyb během chodu programu zapisuje výstup i do konzole.

Kód: Vybrat vše

//*************DEBUGER DOCELA NUTNÉ DO KAŽDÉHO PROGRAMU***********************
PrintWriter debugWriter;
/***************************************
void startDebug() {
  String logFileName = sketchPath("debug_log.txt");
  debugWriter = createWriter(logFileName);
  DEBUG("INFO", "=== DEBUG START ===");
}
/*****************************************
void DEBUG(String level, String text) {
  String timestamp = nf(hour(), 2) + ":" + nf(minute(), 2) + ":" + nf(second(), 2);
  String logLine = "[" + timestamp + "] [" + level + "] " + text;
  debugWriter.println(logLine);
  println(logLine);  // Zároveň i do konzole (volitelné)
}
/******************************************
void stopDebug() {
  DEBUG("INFO", "=== DEBUG END ===");
  debugWriter.flush();
  debugWriter.close();
}
//*********************************************
:!: DŮLEŽITÉ :!:

Kód: Vybrat vše

void setup() {
  size(400, 200);
  startDebug(); //spustí DEBUG NUTNÉ
  DEBUG("INFO", "Program spuštěn."); //zápis
  DEBUG("WARN", "Test warning.");
  DEBUG("ERROR", "Chybí soubor: test.txt");
  stopDebug(); //ukončení DEBUG a zápis do souboru NUTNÉ
}
bez startDebug(); a stopDebug(); se nezapíše soubor. Jak prosté :D
Sice to není mistrovské dílo, ale jako jednoduchý DEBUG stačí.
:twisted: :?: :arrow: :geek: P. Q. M.

Uživatelský avatar
Diego
Příspěvky: 208
Registrován: 23 črc 2017, 09:43
Kontaktovat uživatele:

Re: DEBUG programu za běhu

Příspěvek od Diego » 26 bře 2025, 04:40

Zajímavý, já používám běžný výpis na Sériový port kde a kdy potřebuju, ale tohle vypadá taky zajímavě
https://arze.cz - ARduino Zapojení Elektronika
https://hackaday.io/projects/hacker/1326779 - Moje probíhající i dokončené projekty

Uživatelský avatar
SkullKeep
Příspěvky: 313
Registrován: 23 srp 2017, 18:51
Bydliště: Brno
Kontaktovat uživatele:

Re: DEBUG programu za běhu

Příspěvek od SkullKeep » 26 bře 2025, 10:08

Jenom na ukázku výstup DEBUGeru předchozí verze:

Kód: Vybrat vše

[09:28:33] [INFO] === DEBUG START ===
[09:28:44] [INFO] Vybral jsi složku: C:\Users\praca\Documents\Moje přijaté soubory
[09:28:45] [ERROR] Adresář C:\Users\praca\Documents\Moje přijaté soubory/windows-amd64 není nebo je prázdný.
[09:28:45] [WARN] Adresář C:\Users\praca\Documents\Moje přijaté soubory existuje a není prázdný.
[09:28:45] [WARN] Adresář C:\Users\praca\Documents\Moje přijaté soubory existuje a není prázdný.
[09:28:45] [INFO] Kontroluji složku: C:\Users\praca\Documents\Moje přijaté soubory
[09:28:45] [INFO] Načítám seznam: F:\program\processing\check_fill\windows-amd64\ikony\check\sketch.txt
[09:28:46] [ERROR] Chybí soubor: diody.pde
[09:28:46] [ERROR] Chybí soubor: dostan_cas.pde
[09:28:46] [ERROR] Chybí soubor: fetchWeather.pde
[09:28:46] [ERROR] Chybí soubor: getFileCreationTime.pde
[09:28:46] [ERROR] Chybí soubor: getMoonPhase.pde
[09:28:46] [ERROR] Chybí soubor: info.pde
[09:28:46] [ERROR] Chybí soubor: mousePressed.pde
[09:28:46] [ERROR] Chybí soubor: poc.ico
[09:28:46] [ERROR] Chybí soubor: pocasiAPI.pde
[09:28:46] [ERROR] Chybí soubor: prepocet.pde
[09:28:46] [ERROR] Chybí soubor: svit.pde
[09:28:46] [ERROR] Chybí soubor: typ_vetru.pde
[09:28:46] [ERROR] Chybí soubor: velikonoce.pde
[09:28:46] [ERROR] Chybí soubor: zobraz.pde
[09:28:46] [WARN] Některé soubory chybí
[09:28:46] [ERROR] Chybí soubor: pocasiAPI.exe
[09:28:46] [ERROR] Nelze vytvořit adresáře.
[09:28:48] [INFO] QUIT PROGRAM
[09:28:48] [INFO] === DEBUG END ===
No podle mne je to lepší než jen println(... do kozole ,když nespadne program. Páč po pár hodinách práce nebo zítra asi člověk nebude vědět co vlatně řešil a konzole se navíc neustále maže při znovu spuštění programu.
Tu je novější verze i s tvorbou vlastního adresáře a přidáno i datum.

Kód: Vybrat vše

//*************DEBUGER DOCELA NUTNÉ DO KAŽDÉHO PROGRAMU***********************
PrintWriter debugWriter;
 String timestamp = nf(day(), 2) + "-" + nf(month(), 2) + "-" + year() + "_" + nf(hour(), 2) + "-" + nf(minute(), 2) + "-" + nf(second(), 2);
void startDebug() {
  File DEBUGFolder = new File(sketchPath("DEBUG"));
  if (!DEBUGFolder.exists()) { //neexistuje-li adresář vytvoř ho
    DEBUGFolder.mkdirs();
  }
  String logFileName = sketchPath("DEBUG/" + timestamp + "_debug_log.txt");
  debugWriter = createWriter(logFileName);
  DEBUG("INFO", "=== DEBUG START ===");
}

void DEBUG(String level, String text) {
  String timeNow = nf(day(), 2) + "-" + nf(month(), 2) + "-" + year() + "_" + nf(hour(), 2) + "-" + nf(minute(), 2) + "-" + nf(second(), 2);
  String logLine = "[" + timeNow + "] [" + level + "] " + text;
  debugWriter.println(logLine);
  println(logLine);  // Zároveň i do konzole (volitelné)
}

void stopDebug(boolean spust) {  //když spust bude true spuistí editor na konci běhu a false ne
  DEBUG("INFO", "=== DEBUG END ===");
  debugWriter.flush();
  debugWriter.close();
  println("Log uložen zde: " + sketchPath("DEBUG"));
  // Spustí log v default editoru (funguje na Windows/Linux)
  if (spust) launch(sketchPath("DEBUG/" + timestamp + "_debug_log.txt"));
}
//*********************************************
Výstupní soubor se už nepřemaže, protože vbude vypadat takto: 26-03-2025_10-03-52_debug_log.txt a po každém novém spuštění se vytvoří nový soubor se zápisy.
Ukázka výstupu aktuální verze:

Kód: Vybrat vše

[26-03-2025_10-03-52] [INFO] === DEBUG START ===
[26-03-2025_10-03-56] [INFO] Vybral jsi složku: C:\Users\praca\Documents\My Games
[26-03-2025_10-03-57] [ERROR] Adresář C:\Users\praca\Documents\My Games/windows-amd64 není nebo je prázdný.
[26-03-2025_10-03-57] [WARN] Adresář C:\Users\praca\Documents\My Games existuje a není prázdný.
[26-03-2025_10-03-57] [WARN] Adresář C:\Users\praca\Documents\My Games existuje a není prázdný.
[26-03-2025_10-03-57] [INFO] Kontroluji složku: C:\Users\praca\Documents\My Games
[26-03-2025_10-03-57] [INFO] Načítám seznam: F:\program\processing\check_fill\ikony\check\sketch.txt
[26-03-2025_10-03-57] [ERROR] Chybí soubor: diody.pde
[26-03-2025_10-03-57] [ERROR] Chybí soubor: dostan_cas.pde
[26-03-2025_10-03-57] [ERROR] Chybí soubor: fetchWeather.pde
[26-03-2025_10-03-57] [ERROR] Chybí soubor: getFileCreationTime.pde
[26-03-2025_10-03-57] [ERROR] Chybí soubor: getMoonPhase.pde
[26-03-2025_10-03-57] [ERROR] Chybí soubor: info.pde
[26-03-2025_10-03-57] [ERROR] Chybí soubor: mousePressed.pde
[26-03-2025_10-03-57] [ERROR] Chybí soubor: poc.ico
[26-03-2025_10-03-57] [ERROR] Chybí soubor: pocasiAPI.pde
[26-03-2025_10-03-57] [ERROR] Chybí soubor: prepocet.pde
[26-03-2025_10-03-57] [ERROR] Chybí soubor: svit.pde
[26-03-2025_10-03-57] [ERROR] Chybí soubor: typ_vetru.pde
[26-03-2025_10-03-57] [ERROR] Chybí soubor: velikonoce.pde
[26-03-2025_10-03-57] [ERROR] Chybí soubor: zobraz.pde
[26-03-2025_10-03-57] [WARN] Některé soubory chybí
[26-03-2025_10-03-57] [ERROR] Chybí soubor: pocasiAPI.exe
[26-03-2025_10-03-57] [ERROR] Nelze vytvořit adresáře.
[26-03-2025_10-03-58] [INFO] QUIT PROGRAM
[26-03-2025_10-03-58] [INFO] === DEBUG END ===
:twisted: :?: :arrow: :geek: P. Q. M.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host