Zdravim,
nez prejdu k dotazu, trochu vysvetlim projekt...
Vytvarim software pro vyuku neuronovych siti, ktery umi vytvaret modely vrstevnatych neuronovych siti, nasledne je ucit (supervised learning) podle algoritmu Back-Propagation a SCG (Scaled Conjugate Gradient). Pro pochopeni dotazu neni nutny snad ani vedet co to je neuronova sit, ale kdo to vi, tak si to lip predstavi ;-).
Pri ladeni algoritmu SCG jsem krokoval vsechny kroky algoritmu (Netbeans 6.9.1 - Debugger), zda davaji spravne vysledky. V jednu chvili se mi stalo, ze zelene podbarveni radku, ktere signalizuje na kterem radku se zrovna krokuje, je uplne mimo kod (nekde v komentari), krokuji tedy dal a vidim, ze to bylo jen docasne a ze dalsich par radku kodu vzalo normalne. Krokuji dal a zase se stalo, ze jeden radek kodu uplne preskocilo ( zrovna ten stezejni, u ktereho potrebuji krokovat par metod ;-)). Napadlo me, jestli to nemuze byt tim, ze vypocet algoritmu probiha ve vice vlaknech a (ikdyz krokuji jen jedno) tak se to nejak preskakuje podle toho co se zrovna provadi.
Pripada mi to docela divny, protoze pri krokovani to vynecha jeden radek (ona stezejni metoda), za tim radkem kdyz bych chtel zobrazit hodnoty promennych, ktere byly vypocteny v prubehu te vynechane metody, tak to vypise, ze hodnoty nejsou zname (ikdyz by logicky byt mely). Na dalsich radcich kodu ale tyto hodnoty pouzivam a tam to zas pro zmenu nezarve zadnou chybu typu NullException (kdyz nezna hodnoty promennych tak by mel prekladac zarvat) a spokojene beha dal. Nevim, kde v tomto pripade dopocita dodatecne hodnoty promennych, ale nejsou spravna a trochu me zarazi, kdyz si NetBeans cucaji data z prstu ;-).
V one stezejni metode, kterou to preskakuje je druhy vypocet neuronove site, ktery probiha zase pres vlakna, ale mel by pouzivat pouze jedno a skoncit okamzite (chapej ze ma dopocitat hodnoty, vratit a az potom pokracovat v kodu dal).
Opravdu nevim co s tim a opravdu sem z toho malinko na prasky, protoze to ladim uz skoro mesic :-D
Tedka zkousim instalaci NetBeans 7.0, ale neco mi rika ze to neni problem NetBeans :-P
Diky za rady ;-)
drobas
Fórum › Java
Debug vlaken - Netbeans
Neporadím ti :), ale přidám pár obecných mouder ;)
- udělat pořádný debugger není žádná sranda, takže bych se vůbec nedivil, kdyby ten v NetBeans stál za prd :)
- ladit vícevláknový program krokováním je cesta do problémů, protože tím dostáváš jiné souběhy, takže se ti může stát, že normálně to padá, ale při krokování to jede naprosto správně
- lepší variantou jsou podle mě ladící výpisy (ala OutputDebugString ve woknech) a průchody částmi kódu logovat
Já si myslím, že zkompilovaná verze je starší než ten zdrojový kód. Prostě se ti nepřekompiloval zdroják po změně a ten minulý měl posunuté řádky a chybělo tam volání té funkce (debuger zná jenom čísla řádků a nekontroluje jestli odpovídají zdrojáku). Vyřešíš to překompilování projektu/souboru. Můžeš si to ověřit dekompilováním třídy. Jestli se vyznáš v bajtkódu tak je to příkaz "javap -c balík.Třída".
liborb napsal:
- udělat pořádný debugger není žádná sranda, takže bych se vůbec nedivil, kdyby ten v NetBeans stál za prd :)
Tohle je podle mě asi nejmíň pravděpodobné. Přeci jenom to je program na profesionální úrovni.
To drobas :
Tak sem nad tim stravil dalsi bezesnou noc a dosel sem k dalsimu naprosto nepochopitelnymu zaveru.
Jen tak z hecu sem v ony stezejni metode vyhodil deklarovani nekolika promennych jako final (sice se ta hodnota menit nebude, ale pri kazdym pruchodu metodou se tam prirazuje prave ta stejna hodnota). Najednou vsechno jede bez problemu.
Predpokladam tedy, ze Netbeany nemaji osetreny vyhazovani chyb pro prirazovani hodnot do promennych typu final. Ale znovu, opravdu nevim co se tam delo, ale docela by me to zajimalo, protoze nikdy nevim kdy se mi to stane znovu...
To Pavel :
Kompiluju to po kazdy zmene, na to uz sem nekolikrat dojel.
V malych projektech se to uklada po kazdy zmene a da se hned volat run(), ale tady uz sem se nekolikrat par hodin triskal do hlavy proc to nejde, nez sem zmacknul shift+F11 ;-)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Debug error po free() — založil MartinM
Nastaveni debug release — založil assd
AVR Debug - DebugWire — založil Interrupt
Visual C# Express 2008 - debug — založil cardel
Opakované hlásenie v debug logu wordpressu — založil yard
Moderátoři diskuze