Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Honza
Neregistrovaný
Avatar
Honza:21.4.2013 21:39

Dobrý den, napsal jsem si malý konzolový prográmek dle tutoriálu k OOP, ale pos tisknutí F5 mi vyskočí error: Unable to start debuging. Abych zkušebně rozjel program, musím dát start without debuging. Mám windows 7 a VS 2005 Express edition. Nevíte někdo, čím by to mohlo být, nebo zda to hodně vadí, když bych dělal projekt bez debugu?

 
Odpovědět
21.4.2013 21:39
Avatar
Martin Dráb
Tvůrce
Avatar
Martin Dráb:21.4.2013 21:44

Ahoj,

překládáš projekt v Debug módu?

Jinak debugger není jediná cesta, jak zjišťovat chyby a jejich příčiny. Já osobně se snažím použití debuggeru vyhnout, co se jen dá. Existují rychlejší způsoby, jak zjistit, kde je problém. Mojí oblíbenou technikou je velké množství ladících výpisů (například na konci a začátku téměř každého podprogramu).

Nehledě na to, že v některých situacích ani debugger použít nelze (ale to nebude tvůj případ). Bylo by dobré, kdyby se ten debugger podařilo rozchodit, protože "ladění" bez debuggeru vyžaduje podle mě trochu cviku.

Nahoru Odpovědět
21.4.2013 21:44
2 + 2 = 5 for extremely large values of 2
Avatar
Honza
Neregistrovaný
Avatar
Odpovídá na Martin Dráb
Honza:21.4.2013 21:50

Jak poznám, jestli překládám v Debug módu?

 
Nahoru Odpovědět
21.4.2013 21:50
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na
Petr Nymsa:21.4.2013 21:52

Máš nějaký speciální důvod mít VS 2005 ? VS10 nebo i VS12 Express verze jsou také zdarma. Může to být i způsobeno tím, nevím jakou verzi VS5 podporuje verzi .NET, zda to má vůbec vliv

Nahoru Odpovědět
21.4.2013 21:52
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Honza
Neregistrovaný
Avatar
Odpovídá na Petr Nymsa
Honza:21.4.2013 22:05

Důvodem je to, že ve škole máme 2005, a soubory uložený ve vyšších verzích nejsou s nižsími kompatibilní.

Chtěl bych vědět, co konkrétně ten debug dělá a jestli je skutečně nezbytný. Jestli ano, tak si nainstaluju vyšší verzi, ale radši bych se tomu vyhnul.

 
Nahoru Odpovědět
21.4.2013 22:05
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na
Petr Nymsa:21.4.2013 22:07

Debug ve VS je moný nástroj. POkud pustíš program přes Debug napíše ti místo a typ chyby a nejne to. Dokáže krokovat programem za běhu, vypisovat stav proměných. Dávat brakpointy a další věci. Moc to ulehčuje vývoj.

Nahoru Odpovědět
21.4.2013 22:07
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Martin Dráb
Luboš Běhounek Satik:21.4.2013 22:09

Jen ze zvědavosti, v jakých situacích debugger nelze použít?

Nahoru Odpovědět
21.4.2013 22:09
https://www.facebook.com/peasantsandcastles/
Avatar
Martin Dráb
Tvůrce
Avatar
Martin Dráb:21.4.2013 22:32

Satik: hm, to jsem se trochu nepřesně vyjádřil. Většinou jej lze použít, ale nakonfigurovat vše tak, aby jej použít šlo, nemusí být vůbec jednoduché. Ale u C# se to asi moc často nestane.

Případy, které jsem měl na mysli:

  1. Ladění ovladače jádra – debugger použít lze, ale v obvyklých podmínkách (pouštění ovladače ve virtuálním storji) nemusí být použití většiny jeho funkcí (krokování zdrojáku, breakpointy) snadné. Je potřeba speciální software (např. plugin(y) do MSVS), aby se to vůbec dalo a bylo to dostatečně rychlé. V mnoha situacích mi přijde efektivnější se nejprve pokusit příčinu chyby vyčíst z ladících výpisů a nepoužívat žádné pokročilejší funkce debuggeru, než se někam krokovat. Krom toho, když se člověk překlikne a přejede místo, které chtěl zkoumat, tka musí restartovat/vracet se k předchozímu snímku virtuálního stroje, což může chvíli trvat, a nemá v ruce nic.
  2. Tvorba bootkitu – pokud modifikuješ hlavní zaváděcí sektor či boot. sektor diskového oddílu, je ladění ještě těžší. Zatím jedinou možností, co jsem viděl, je nainstalovat si Bochs a nějakým způsobem ho donutit podporovat ladění. Zprovoznit se mi to nepovedlo a nakonec jsem odhaloval chyby pouze čtením kódu.
  3. Race conditions – pokud se děje něco špatně v důsledku špatné synchronizace běhu více vláken, tak si nejsem jistý, jak třeba breakpointy či krokování pomohou. Částečně proto, že ovlivňují plánování. Ladící výpisy samozřejmě plánování ovlivňují také, ale neznám lepší způsob, jak tyto problémy řešit.
  4. Služby a DLL knihovny – ladit DLL knihovny lze, je jen třeba spustit hostitelskou aplikaci. Ladit služby jsem nikdy nezkoušel a myslím, že zvláště v případech, kdy služba běží, aniž by byl někdo přihlášen, to půjde jen vzdáleně.
  5. OS – v rámci předmětu Operační systémy jsme ve škole v týmech tvořili jednodušší operační systém. Bylo to v emulátoru procesoru MIPS R4000 a nic lepšího, než krokování po instrukcích ten emulátor neuměl. Kdo chtěl, tak by asi byl schopen si zkonfigurovat gdb, ale na to nikdo z nás neměl čas ani chuť. Vím, že tenhle případ je trochu mimo, ale naučil mě, že existují i jiné metody, jak ladit a že to bez debuggeru může jít i lépe.
Editováno 21.4.2013 22:33
Nahoru Odpovědět
21.4.2013 22:32
2 + 2 = 5 for extremely large values of 2
Avatar
Honza
Neregistrovaný
Avatar
Honza:21.4.2013 22:55

Nenapada někoho něco, jak zprovoznit ten Debug? :)

 
Nahoru Odpovědět
21.4.2013 22:55
Avatar
Martin Dráb
Tvůrce
Avatar
Martin Dráb:21.4.2013 23:52

Už si nepamatuju, jak to bylo ve VS2005. Ale myslím, že to tam bylo stejné či podobné jako je ve VS2010. Tesně pod hlavním menu spíše v pravé části obrazovky bys měl vidět dva vysouvací seznamy. Jeden určuje, pro jakou platformu kompiluješ (Win32, x64), druhý udává režim kompilace (Release, Debug). Pokud máš nastavený režim kompilace na Debug, tak by ladění mělo fungovat. Alternativně lze režim kompilace a cílovou platformu změnit v v okně Configuration Manageru.

Nahoru Odpovědět
21.4.2013 23:52
2 + 2 = 5 for extremely large values of 2
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.