Witajcie,
Mam problem i to spory, chodzi o rozjechane breakpointy w Rio i Sydneyjak sobie z tym poradzic. Brekakpont postawiony na danej linii przenosi się gdzieś w dół na komentarz albo linia wykonująca proocedurę czy cokolwiek innego nie jest brana przez debugger. Ręce opadają
Może próbujesz debugować aplikację skompilowaną w trybie release / z optymalizacjami?
To raczej nie jest wina środowiska, a debuggera. Dokładnie takie same objawy miewałem w poprzedniej wersji Lazarusa, pomimo tego, że projekt był skompilowany w trybie debug
, symbole były w osobnym pliku, a optymalizacje były wyłączone.
Pierwszy raz dowiaduję się o czymś takim. W żadnej wersji nie było takich problemów. Być może problem (jeżeli naprawdę istnieje) został stworzony przez użytkownika i występuje jak coś dziwnego się namiesza w ustawieniach... tylko dlaczego w 2 wersjach (Rio i Sydney)? Próbowałeś przebudować projekt? Oczywiście breakpointy działają tylko i wyłącznie w trybie Debug (w release środowisko "wie" gdzie są postawione ale je ignoruje).
@kAzek: nigdy się z czymś takim nie spotkałeś? ;)
Sam doświadczyłem takiego zachowania wielokrotnie (co prawda w Lazarusie, ale to samo się działo), ostatnio głównie w projektach takich jak Deep Platformer, CTCT i Richtris. Jeśli dobrze pamietam, takie rzeczy lubiły się dziać w połączeniu z generykami oraz fikuśnymi getterami.
Stawiałem sobie breakpoint na którejś linijce i czekałem aż program się zatrzyma na nim. Następnie debuggowałem linijka po linijce, za pomocą F7
lub F8
, w zależności od potrzeb. Czasem bywało tak, że w edytorze podświetlało mi pustą linijkę pomiędzy ciałami metod, albo tę z end;
którejś metody. Kod wykonywany był normalnie, ale nie wiedziałem która linijka konkretnie. Dopiero po kilku wciśnięciach F7
/F8
edytor zaczynał podświetlać prawidłowe linijki.
Z tego co się dowiedziałem (od chłopaków z forum Lazarusa), nie jest to problem IDE, a debuggera. Po prostu ten nie wspiera pewnych rzeczy obsługiwanych przez Free Pascala, przez co dzieją się takie losowe cuda. Przy czym debugger nigdy nie umierał — przez chwilę edytor kodu wariował, ale wszystko działało prawidłowo i można było debuggować kod (tyle że chwilami bez podglądu aktualnej linii).
spróbuj usunąć wszystkie pliki dcu
i przebudować projekt
też to mam czasami. To bug moim zdaniem.
Nie wiem jak w Delphi, ale w C++ Builder przy agresywnych optymalizacjach takie same cyrki potrafią się dziać. W trybie krokowym czasami IDE podświetla losowe linijki kodu, ale zawsze w takiej samej kolejności w danej funkcji/metodzie. Po wyłączeniu optymalizacji jest ok. Przeszukiwałem internet pod tym względem i ludzie tak samo mieli problem przy włączonych optymalizacjach. Nie wiem dlaczego tak się dzieje, jednak jak na moje oko raczej nie powinno tak być.
piars napisał(a):
Witajcie,
Mam problem i to spory, chodzi o rozjechane breakpointy w Rio i Sydneyjak sobie z tym poradzic. Brekakpont postawiony na danej linii przenosi się gdzieś w dół na komentarz albo linia wykonująca proocedurę czy cokolwiek innego nie jest brana przez debugger. Ręce opadają
Też miałem to wielokrotnie, pomogło usunięcie sekcji [Breakpoints] w pliku <nazwaProjektu>.dsk (przy zamkniętym środowisku).
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.