Soci (Soczó Zsolt) szakmai blogja

2008.12.11.

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

Filed under: .NET,C#,CLR,Debugging,Szakmai élet,Visual Studio,VS 2008 — Soczó Zsolt @ 12:32

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.

6 Comments

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

    Comment by Kurbli — 2008.12.11. @ 14:12

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

    Comment by Soczó Zsolt — 2008.12.11. @ 14:30

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

    Comment by Kurbli — 2008.12.11. @ 14:39

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

    Comment by hrongyorgy — 2008.12.12. @ 09:17

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

    Comment by Soczó Zsolt — 2008.12.21. @ 13:17

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

    Comment by szl — 2008.12.26. @ 22:43

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress