Wyłączenie (?) kodu z kompilacji.

1

Miałem duży problem z nazwaniem tego tematu...

Chodzi mi o to, że coraz częściej zdarza mi się "obserwować" ciekawe zjawisko - jakiekolwiek zmiany w MOIM kodzie nie wpływają na jego uruchomienie. Breakpointy stają się wtedy "puste" w środku, a po najechaniu na nie muszą wyświetla się okienko:
http://img39.imageshack.us/img39/6881/86668865.png

Czy ktoś wie jak się tego pozbyć? Zazwyczaj robiłem to kopiując kod wszystkich klas do nowego projektu, i wszystko działało. Ale im dłuższy jest mój kod, tym bardziej jest to frustrujące :/

Dziękuję za każdą pomoc bo mam z tym naprawdę problem :]

EDIT: oczywiście nie muszę wspominać że nie mam żadnych dyrektyw warunkowej kompilacji, a jeśli kompilator coś optymizuje to nic o tym nie wiem :/

0

a moze masz kod w stylu:

if (1 == 0) {
 /* kod ktory nigdy sie nie wykona */
}
0

Clean Solution / Rebuild nie pomagają?

0

Na pewno kompilujesz w trybie Debug? Jak nie, to się nie dziw ze kompilator optymalizuje twój kod i może on wykonywac się inaczej niz myślisz.

1

OK, dzięki wszystkim, w jednym przypadku tak właśnie jak [losowa nazwa] pisał było :). Aczkolwiek częściej zdarza się coś takiego (może rozwiązanie też będzie banalne :} Aż się boję ;))

A co zrobić gdy w okienku z breakpointa wyświetla się "The breakpoint will not currently be hit. No symbols were loaded from this document" (może trochę coś lekko przekręciłem)

Właściwie to rozumiem o co w tym chodzi, ale nie wiem jak sobie z tym poradzić. Zazwyczaj pojawiało się toto w ciekawych okolicznościach:
1: okienko "visual studio czeka w tej chwili na inną aplikację. Możesz kontynuować czekanie albo przełączyć się do oczekiwanej aplikacji" (przetłumaczone bo nie pamiętam angielskiej wersji :S).
klikanie "switch" albo "continue" nic nie daje, czekanie też nie.
2: jestem zmuszony zabić proces :/
3: po uruchomieniu visual studio breakpointy we wszystkich klasach pokazują coś takiego.
4: zdarza mi się to tylko w aplikacjach używających zewnętrznych bibliotek...

Compile action we wszystkich klasach oczywiście wynosi "build".

0

Tak komunikat zwykle oznacza, ze Visual nie powiazal kodu z binarka. Zeby sledzic kod potrzebujesz

  1. binarki, tej ktora chcesz wykonac
  2. kodu zrodlowego - oczywiste
  3. symboli, pliku pdb, ktory wiaze jedna konkretna binarke z kodem (czyli w skrocie mowi ktora operacja w binarce to konkretna linijka w kodzie).

To oznacza, ze taki komunikat pokaze sie w sytuacji, gdy:
a) binarka nie zostala zaladowana - szczegolnie czeste, gdy masz kilka binarek i wydaje Ci sie, ze zaladowala sie ta, o ktorej myslisz. Mozna sprawdzic w panelu Output (tryb Debug) co zostalo zaladowane
b) kod zrodlowy znajduje sie w innym miejscu niz podczas kompilacji i tworzenia pliku pdb
c) nie znaleziono odpowiadajacego pdb - musi byc ten sam, ktory zostal stworzony podczas kompilacji binarki (powiazanie przez guida) oraz w katalogu, gdzie srodowisko ladujace binarke go znajdzie. Jesli jest poprawnie w okienku Output bedzie info przy ladowanej binarce: "Symbols loaded for xxx.dll". W przeciwnym wypadku: "Symbols not found".

To wszystko powoduje, ze Visual pokazuje pustego breakpointa, bo z jego punktu widzenia breakpoint na kodzie nie bedzie odpalony - dany kod nie zostal "uruchomiony" - czyli nie jest powiazany z zadna aktualnie zaladowana binarka.

1

Podczas debugowania, jak krokowo wchodzę do klasy zawierającej taki problem kompilatow wyskakuje z jakimś tekstem że, ni pamiętam dokładnie, kod jest inny niż efekt kompilacji czy coś innego. I jest opcja wyszukania właściwego pliku źródłowego. Tylko że wskazanie tego co chcę nic w moim przypadku nie daje :/
Kiedy spotkam się z tym następny raz napiszę co ustalę z tymi binarkami -> na razie dzięki johny :D

0

Pewnie komunikat, ze kod jest inny od kodu skompilowanej dllki. Znaczy sie zaladowano symbole, ale nie pasuja do kodu, ktory znalazl we wskazanej sciezce (lub nie znalazl takiego pliku). Innymi slowy - binarka byla kompilowana z innego kodu.

0

Tak może się dziać, np. gdy dwukrotnie otworzy się jeden plik w VS (tak, zdarzało mi się takie numery odstawiać :P).

Ostatnio miałem tak też w pracy, przyczyny nie znam, ale jak wywaliłem wszystko z bin i obj, dałem Rebuild Solution to zadziałało.

1 użytkowników online, w tym zalogowanych: 0, gości: 1