Kukátko   zodpovězená otázka

VB.NET, Architektura, Algoritmy

Jak lze ve VB2008 nastavit, aby se při změně hodnoty v určité proměnné, zastavil program na řádce, která změnu hodnoty proměnné způsobila ?

Ve VB6 bylo něco jako kukátko, kde se dal nastavil stop při každé změně určité proměnné, ale v VB2008 to nemohu najít.

Poraďte prosím

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Ve VS2008 se dá nastavit Breakpoint, na kterém se program zastaví jsou-li splněny určité podmínky (tedy i při změně hodnoty proměnné). Žádné globální hlídání proměnných tam není. Dále si nejsem jist, zda tento podmíněný Breakpoint je i v Express verzích VB a C#.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji za odpověď, přestože jste mne moc nepotěšil.

To hlídání na breakpointu je skoro na nic, pokud se tedy proměnná mění na více pozicích v kódu. Např. když máte nějaké vyhodnocení podmínek a na jejich základě měníte globální proměnnou, tak bych musel nastavit breakpointy na všech řádcích kde může dojít ke změně, jestli jsem teda dobře pochopil.

Trochu nechápu proč microsoft od řešení z VB6 upustil. Tam stačilo do watche vložit název proměnné a nastavit mu vlastnost stop při změně a program se v ladícím prostředí zastavil vždy na místě kde byla proměnná změněna. Pokud tedy při testech program vyhazoval chybný výstup hodnot, každý si mohl rychle a elegantně zjistit kde došlo k nějaké logické chybě..

Přesto ještě jednou děkuji za odpověď, ušetřil jste mi čas se zbytečným hledáním něčeho co už neexistuje.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Zdravím, pokud chcete sledovat, kdo kdy a jak mění proměnnou, obalte ji pomocí vlastnosti a chytejte přiřazení v setteru. Je to čisté řešení, globální proměnné byste mít nikde neměl.

'původní kód
Public promenna As String

'nový kód
Private _promenna As String
Public Property promenna As String
    Get
        Return _promenna
    End Get
    Set(value As String)
        _promenna = value
    End Set
End Property

Pak vám stačí normální breakpoint do metody Set, což je jediné místo, kde se mění proměnná _promenna. Všude jinde se jen pracuje s vlastností promenna.

Odkud změna proběhla si snadno najdete v okně Call Stack (dá se zapnout v nabídce Debug / Windows, musíte mít spuštěné ladění, jinak to tam není vidět).

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback