Debugowanie kodu w Keilu: jak wyja¶nić omijanie instrukcji w if i switch case?
problem z Keilem
From: "Paweł" <paw1976_at_nospam_poczta.onet.pl>
Subject: problem z Keilem
Date: Thu, 2 May 2002 13:21:50 +0200
Nie wiem czy to problem z Keilem czy zkodem ale kod sprawdzałme i nie
rozumiem.
Dlaczego podczas debugowania debuger opuszcza niektóre linijki w intrukcjach
if , if else ,else.
Równierz gdy piszę to samo za pomocą switch case opuszcza dokładnie te same
linijki.
Powiedzmy dzieje się tak wchodzi do pierwszego if robi kilka instrukcji po
których jest jeszcze kilka ale on je ignoruje i nagle przeskakuje do w
srodek drugiego if (bez sensu). Zaglądając w kod asemblera jest to samo w
miejscu
skoku jest poprostu sjmp i tyle.
Kod naprawdę nie jest długi. A i jest to w funkcji tpu interrupt.
Pozdr. Paweł
From: Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl>
Subject: Re: problem z Keilem
Date: Thu, 02 May 2002 13:31:37 +0200
Nie wiem czy to problem z Keilem czy zkodem ale kod sprawdzałme i nie
rozumiem.
Dlaczego podczas debugowania debuger opuszcza niektóre linijki w intrukcjach
if , if else ,else.
Równierz gdy piszę to samo za pomocą switch case opuszcza dokładnie te same
linijki.
Takie cuda miałem kiedy¶ przy niezgodno¶ci źrodeł z plikami przekompilowanymi,
jednak Keila nigdy na czym¶ takim nie złapałem.
Powiedzmy dzieje się tak wchodzi do pierwszego if robi kilka instrukcji po
których jest jeszcze kilka ale on je ignoruje i nagle przeskakuje do w
srodek drugiego if (bez sensu). Zaglądając w kod asemblera jest to samo w
miejscu
skoku jest poprostu sjmp i tyle.
To znaczy jak....sprawdzałe¶ źródła i powstawiał Ci tam bezwarunkowe skoki czy
jak ?
Hmm...może przetwórz projekt jeszcze raz....może jaki¶ moduł mu się spa...ł ;-))
--
PZD, Irek.N.
From: "Paweł" <paw1976_at_nospam_poczta.onet.pl>
Subject: Re: problem z Keilem
Date: Thu, 2 May 2002 14:21:10 +0200
To znaczy jak....sprawdzałe¶ źródła i powstawiał Ci tam bezwarunkowe skoki
czy
jak ?
Przy debugowaniu jest możliwo¶ć korzystania disasemblera, a i jest możliwo¶ć
ustawienia żeby generował ci plik scr, w którym są wszystkie informacje i na
temat modułu, a później go debugował no i tu i tu są te dziwne skoki.
Kurna dziwne bo wszystko jest ok gdy naprzykład zamiast if ifelse ifelse
else zrobię
if if if if bez else.
Pozdr. Paweł
From: "Paweł" <paw1976_at_nospam_poczta.onet.pl>
Subject: Re: problem z Keilem
Date: Thu, 2 May 2002 14:25:13 +0200
A dodam jeszcze że w tym wynikowym asemblerze .src nie ma tych linijek
które debuger pomija.
Pozdr. Paweł
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: problem z Keilem
Date: Thu, 2 May 2002 14:38:33 +0200
Użytkownik "Paweł" <paw1976_at_nospam_poczta.onet.pl> napisał w wiadomo¶ci
news:aarb47$6hf$1_at_nospam_news.onet.pl...
A dodam jeszcze że w tym wynikowym asemblerze .src nie ma tych linijek
które debuger pomija.
Dałby¶ radę wystawić gdzie¶ ten kawałek .c i .src na widok publiczny?
MDz
From: "Paweł" <paw1976_at_nospam_poczta.onet.pl>
Subject: Re: problem z Keilem
Date: Thu, 2 May 2002 15:00:00 +0200
Jak chce ci się z tym pomęczyć to ¶lę na priwa.
Pozdr. Paweł
Użytkownik "Marek Dzwonnik" <mdz_at_nospam_message.pl> napisał w wiadomo¶ci
news:aarbqi$72t$1_at_nospam_news.tpi.pl...
Użytkownik "Paweł" <paw1976_at_nospam_poczta.onet.pl> napisał w wiadomo¶ci
news:aarb47$6hf$1_at_nospam_news.onet.pl...
A dodam jeszcze że w tym wynikowym asemblerze .src nie ma tych linijek
które debuger pomija.
Dałby¶ radę wystawić gdzie¶ ten kawałek .c i .src na widok publiczny?
MDz
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: problem z Keilem
Date: Thu, 2 May 2002 18:38:50 +0200
Użytkownik "Marek Dzwonnik" <mdz_at_nospam_message.pl> napisał w wiadomo¶ci
news:aarbqi$72t$1_at_nospam_news.tpi.pl...
Użytkownik "Paweł" <paw1976_at_nospam_poczta.onet.pl> napisał w wiadomo¶ci
news:aarb47$6hf$1_at_nospam_news.onet.pl...
A dodam jeszcze że w tym wynikowym asemblerze .src nie ma tych linijek
które debuger pomija.
Dałby¶ radę wystawić gdzie¶ ten kawałek .c i .src na widok publiczny?
Rozwiązanie problemu wraz z komentarzem poszło na priv.
Gwoli wyja¶nienia dla grupowiczów: Tajemnicze skoki wynikały z
optymalizacji pomijającej nadmiarową cze¶ć kodu powtarzającą się w
wszystkich blokach. Natomiast faktyczny błąd tkwi (jak mi się wydaje) w zle
dobranych rozmiarach zmiennych.
MDz
From: "Andy" <anok_at_nospam_ceti.pl>
Subject: Re: problem z Keilem
Date: Thu, 2 May 2002 13:37:26 +0200
Użytkownik "Paweł" <paw1976_at_nospam_poczta.onet.pl> napisał w wiadomo¶ci
news:aar7db$195$1_at_nospam_news.onet.pl...
Nie wiem czy to problem z Keilem czy zkodem ale kod sprawdzałme i nie
rozumiem.
Dlaczego podczas debugowania debuger opuszcza niektóre linijki w
intrukcjach
if , if else ,else.
Równierz gdy piszę to samo za pomocą switch case opuszcza dokładnie te
same
linijki.
Powiedzmy dzieje się tak wchodzi do pierwszego if robi kilka instrukcji po
których jest jeszcze kilka ale on je ignoruje i nagle przeskakuje do w
srodek drugiego if (bez sensu). Zaglądając w kod asemblera jest to samo w
miejscu
skoku jest poprostu sjmp i tyle.
takie triki czasem wynikaja z optymalizacji, ktore przeprowadzi kompilator
szczegolnie jak jest "common subroutine packing"
czy pomimo dziwnego zachowania przy debugingu cala procedura dziala dobrze
czy nie ?
Andrzej
From: "Paweł" <paw1976_at_nospam_poczta.onet.pl>
Subject: Re: problem z Keilem
Date: Thu, 2 May 2002 14:22:56 +0200
czy pomimo dziwnego zachowania przy debugingu cala procedura dziala dobrze
czy nie ?
nie działa dobrze bo omija mi całe dwie linijki z wyliczeniem zmiennej którą
później chcę wrzucić na wy¶wietlacz no a tu krzaczki.
Pozdr. Paweł
From: "Jacek Bogusz" <jacek.bogusz_at_nospam_ep.com.pl>
Subject: Re: problem z Keilem
Date: Thu, 2 May 2002 14:28:02 +0200
Cze! Nie znam Keil, używam Raisonance - czasami wywija podobne numery. Ale
prawie zawsze jest to związane z jakim¶ "warning" wy¶wietlanym po
kompilacji, z punktu widzenia pracy kompilatora nieistotnym (tak, że muszę
rozwinąć listę aby zobaczyć o co biega), a jednak... Potrafi skurczybyk w
ten sposób ominąć całe linijki. Ale ma to wpływ na symulator, na kod
wynikowy już nie. Wpisany do procesora zachowuje się poprawnie. Możesz podać
źródło swojego programu (tzn tego kawałka?). Możesz wysłać na maila, może
co¶ po prostu przeoczyłe¶? Czasami w ferworze walki co¶ umyka.... ;)))
Jacek
Użytkownik "Paweł" <paw1976_at_nospam_poczta.onet.pl> napisał w wiadomo¶ci
news:aaravv$6ck$1_at_nospam_news.onet.pl...
czy pomimo dziwnego zachowania przy debugingu cala procedura dziala
dobrze
czy nie ?
nie działa dobrze bo omija mi całe dwie linijki z wyliczeniem zmiennej
którą
później chcę wrzucić na wy¶wietlacz no a tu krzaczki.
Pozdr. Paweł
From: "GeePee" <geepee_at_nospam_o2.pl>
Subject: Re: problem z Keilem
Date: Thu, 2 May 2002 17:00:43 +0200
Wyłącz optymaliczaje... czasem to pomaga...
Użytkownik "Paweł" <paw1976_at_nospam_poczta.onet.pl> napisał w wiadomo¶ci
news:aar7db$195$1_at_nospam_news.onet.pl...
Nie wiem czy to problem z Keilem czy zkodem ale kod sprawdzałme i nie
rozumiem.
Dlaczego podczas debugowania debuger opuszcza niektóre linijki w
intrukcjach
if , if else ,else.
Równierz gdy piszę to samo za pomocą switch case opuszcza dokładnie te
same
linijki.
Powiedzmy dzieje się tak wchodzi do pierwszego if robi kilka instrukcji po
których jest jeszcze kilka ale on je ignoruje i nagle przeskakuje do w
srodek drugiego if (bez sensu). Zaglądając w kod asemblera jest to samo w
miejscu
skoku jest poprostu sjmp i tyle.
Kod naprawdę nie jest długi. A i jest to w funkcji tpu interrupt.
Pozdr. Paweł