Article View: pl.comp.lang.delphi
Article #294612Re: callChain
From: Tomek D
Date: Fri, 26 Jun 2020 14:18
Date: Fri, 26 Jun 2020 14:18
17 lines
1989 bytes
1989 bytes
W dniu 26.06.2020 o 14:03, apl pisze: > > Drodzy koledzy, > każdy z was wie, jakim koszmarem jest debugowanie programu, zwÅaszcza takiego, do którego siÄgamy po wielu latach celem przebudowy nie mówiÄ c już o cudzych kodach źródÅowych. > Bardzo pomocna w tym przypadku jest znajomoÅÄ caÅego ÅaÅcucha woÅaÅ prowadzÄ cych do danego podprogramu. > W tym poÅcie chciaÅbym podzieliÄ siÄ bardzo prostym wynalazkiem i poddaÄ go waszej krytycznej ocenie. > PrzypuÅÄmy, że Åledzonym podprogramem jest procedure sub2. > Mój "chwyt" polega na dodaniu parametru formalnego callChain:string przekazywanego przez wartoÅÄ oraz na zamieszczeniu na poczÄ tku treÅci wykonawczej instrukcji callChain:ÊllChain+'>sub2'; Zabieg ten należy powtórzyÄ w każdym podprogramie woÅajÄ cym wybrany Åledzony (tu: sub2) z tym, że zamiast sub2 wpisujemy nazwÄ podprogramu woÅajÄ cego z dodatkiem znaku '>' rozdzielajÄ cego nazwy w tworzonym ÅaÅcuchu. Krytyczne fragmenty treÅci sub2 obejmujemy instrukcjÄ try except end, gdzie zamieszczamy showMessage informujÄ cy o bÅÄdzie. W przypadku iteracji, czy rekurencji przydatne bÄdzie proliferowanie wartoÅci zmiennych sterujÄ cych - dodajemy wtedy wymagane parametry formalne przekazywane przez wartoÅÄ. Poniżej zamieszczam maksymalnie uproszczony przykÅad ilustrujÄ cy tÄ ideÄ zawierajÄ cy iteracjÄ i rekurencjÄ, stÄ d parametry i,n:word. > Tak wzbogacony program daje nieoceniony wglÄ d w bieÅ¼Ä cy stan wykonania programu odczytujÄ c aktualnÄ wartoÅÄ callChain. Program niejako buduje siÄ sam, Å¼Ä dajÄ c brakujÄ cych parametrów formalnych podczas kompilacji. Może nie rozumiem problemu autora wÄ tku, ale w Årodowisku Delphi podczas debugowania jest dostÄpne okno "Call stack", które pokazuje ÅcieżkÄ wywoÅaÅ. I nie wymaga modyfikacji kodu źródÅowego. Ponadto mamy zewnÄtrzne narzÄdzia takie jak madExcept, EurekaLog, CodeSite, które wydatnie uÅatwiajÄ lokalizacjÄ bÅÄdów. Tomek D.
Message-ID:
<rd4p1j$f9t$1@gioia.aioe.org>
Path:
polish.pugleaf.net!archive.newsdeef.eu!apf1.newsdeef.eu!not-for-mail
References:
<81b9653c-e77c-444e-9e47-38872c9e3853o@googlegroups.com>