Debug vlaken - Netbeans – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Debug vlaken - Netbeans – Java – Fórum – Programujte.comDebug vlaken - Netbeans – Java – Fórum – Programujte.com

 

drobas0
Newbie
21. 6. 2011   #1
-
0
-

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

Nahlásit jako SPAM
IP: 188.120.212.–
liborb
~ Redaktor
+18
Guru
22. 6. 2011   #2
-
0
-

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

Nahlásit jako SPAM
IP: 78.80.52.–
Pavel
~ Anonymní uživatel
383 příspěvků
22. 6. 2011   #3
-
0
-

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.

Nahlásit jako SPAM
IP: 89.176.55.–
drobas0
Newbie
22. 6. 2011   #4
-
0
-

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...

Nahlásit jako SPAM
IP: 188.120.212.–
drobas0
Newbie
22. 6. 2011   #5
-
0
-

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 ;-)

Nahlásit jako SPAM
IP: 188.120.212.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 37 hostů

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

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý