Portál AbcLinuxu, 14. května 2025 22:27

Dotaz: Debuggovani

26.8.2016 12:28 Petr | skóre: 29
Debuggovani
Přečteno: 479×
Odpovědět | Admin
Ahoj, ucim se programovat v Java/C#, trochu tapu jak ma probihat debuggovani u vicevlaknovych aplikaci? Nejak me nakopnete, diky moc. Petr
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.8.2016 20:19 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Debuggovani
Odpovědět | | Sbalit | Link | Blokovat | Admin
Úplne rovnako ako pri jednovláknových aplikáciách. Akurát, že niekde nájdeš okno "Threads" a tam nájdeš zoznam threadov a môžeš povedať, že teraz má tento "focus", prípadne môžeš iný thread pozastaviť a podobne.

O akom prostredí sa bavíme?
28.8.2016 02:56 Petr | skóre: 29
Rozbalit Rozbalit vše Re: Debuggovani
Diky za odpoved, vyzkousim... Ted hlavne delam do skoly v C# v Monodeveloperu, jinak Java - NetBeans.
29.8.2016 08:20 soyo
Rozbalit Rozbalit vše Re: Debuggovani
Na druhej strane ale debug zastavi casto iba 1vlakno, co obvykle zmeni chovanie aplikacie. Tu je velmi napomocne logovanie, obsahujuce meno vlakna a human friendly pomenovanie vlakien. A urcite pomoze pohlad na aplikaciu cez profiler.
29.8.2016 09:33 Marián Petráš
Rozbalit Rozbalit vše Re: Debuggovani

Třeba právě NetBeans umožňují u breakpointu nastavit, jestli se má zastavit jen jedno vlákno, všechna vlákna nebo žádné vlákno (to má využití třeba tehdy, když při průchodu breakpointem chcete třeba jen vypsat hodnotu nějakého výrazu). Ale výchozí je zastavení jednoho vlákna.

Je pravda, že zastavením jednoho vlákna ovlivníte chování aplikace. Ale také je pravda, že chování aplikace ovlivníte už jen tím, že běží v debugovacím režimu. Chování aplikací je ovlivňováno i spoustou jiných věcí, už třeba jen operačním systémem. Chtěl jsem tím říct, že pokud je aplikace napsaná správně, zastavení jednoho vlákna by nemělo negativně ovlivnit její funkci a pokud ji tak ovlivní, pak je zřejmě v aplikaci chyba. Výjimkou, na kterou je potřeba dát pozor, jsou time-outy – tedy případy, kdy během debuggování dojde vlivem zastavení vlákna k time-outu, ke kterému by jinak nedošlo.

29.8.2016 11:33 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Debuggovani
Zastavování jednotlivých vláken se používá při ladění vícevláknových aplikací právě pro simulaci problémů s konkurenčním přístupem – v případě, kdy aplikace běží „normálně“ a k problému s konkurenčním přístupem obvykle nedojde, protože se vlákna střídají „správně“. Zastavením vláken je pak možné nasimulovat nějakou specifickou situaci, kdy dojde k pozastavení provádění jednoho vlákna a začne se provádět vlákno jiné. Samozřejmě to lze použít pouze v případě, kdy už víte, kde přibližně tu chybu hledat – spíš je to ověření, že průběh té chyby je opravdu takový, jak si myslíte.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.