Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.

December 11, 2008 / by Zsolt Soczó

Debugolás a .NET fw. forrása segítségével

Kaptam egy igen nehezen megközelíthető problémát, amelyben a fókusz a TAB-ra átlépett egyes controlokat. Nem egy triviális TabStop=false probléma volt.
VS 2005-ös projektekről van szó, átkonvertáltam őket 2008-ra, hogy tudjam a fw. forráskódját is debugolni. Az _NT_SYMBOL_PATH= nekem be van állítva a gépen a publikus os szimbólumokra (elsősorban ahhoz amikor WinDbgozok), emiatt nem tudtam a vsből .net fw.-öt debugolni, mert előbb lehúzza a stripped szimbólumokat, a teljeshez már hozzá se nyúl. Ezért egy bat-ból indítom a vs-t, előtte kiütve az eredeti _NT_SYMBOL_PATH-t.
Így már ment a fw. forrás debug, de mivel a clr az ngenelt optimalizált kódot töltötte be, ezért nagyon sok típus belseje nem látszik normálisan. Erre megoldás itt található. Le lehet tiltani, hogy a CLR az ngenelt kódot töltse be, így már rendesen lehet debugolni.
Lehetne, ha nem lenne elcsúszva némelyik forráskód a pdb-ben található sorszámoktól. Ilyenkor van az, hogy teljesen más sorokon lépkedünk végig, mint amit a source ablakban látunk, pl. kommenteken lépked végig a debugger.
A megoldás erre egyszerűbb volt, mint gondoltam volna: próbaképpen kitöröltem 3 sort pl. a Control.cs elejéből, így visszaállt a szinkron.
Maga az alapprobléma egyébként abból adódott, hogy egy kompozit Third Party Contol explicit letiltotta
a TAB-olást, a ControlStyle-ból kivéve a Selectable flaget.

Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.

LEAVE A COMMENT

6 COMMENTS

  • Kurbli December 11, 2008

    átlépett helyett átléptet?
    Kezdem elveszteni a fonalat.:)
    Ezt már nem tanulom meg sose.:(

  • Soczó Zsolt December 11, 2008

    Átlépett, jól írtam, kihagyott, más szavakkal.

  • Kurbli December 11, 2008

    Utánanéztem, ezek szerint meg sem villan az átlépett tab, mert nem is kerül a fókuszba. Érdekes.

  • hrongyorgy December 12, 2008

    Amit nem ertek, hogy persze, workaround, hogy kitorol az ember annyi sort a fajlbol, amennyivel el van csuszva a szinkron, de maga az elcsuszas nem bug? Nem kellene jelenteni a MS fele?

  • Soczó Zsolt December 21, 2008

    A forrás bugos, igen, de írják, hogy ez megesik. :)
    Szóval by design. :)

  • szl December 26, 2008

    Anno Tankó Peti mondogatta, hogy uralni kell az eszközt.
    Na most, ha veszek egy 3. fél által gyártott kütyükontrollt, akkor mit uralok?
    Persze megtanulni úgy a .net-et, hogy ne kelljen kontrollt venni, idő, pénz, meg akarás kérdésése, ha viszont akár lustaságból vesz az ember kontrollt, akkor számoljon vele, hogy megszívatják.