Poslední pomoc při ladění

vložil Radek Červinka 18. března 2014 00:49

Dnes bych rád ukázal jeden prastarý trik, který vám může pomoci při ladění v poslední instanci.

AV

Delphi v normální situaci instaluje globální ovladač výjimek, který odchytává vaše problémy (to je to okno které se zobrazí při výjimce). Tento globální ovladač samozřejmě můžete nahradit vlastním, je na to několik knihoven - podrobněji jsem o tom psal dříve - Exception dialog v Delphi.

Může se stát, že je něco úplně špatně a dostanete jen adresu chyby (např. je to typické pro chyby v sekci finalization, kdy už neexistuje vaše obsluha). Testovací ukázkový kód.

program Project19;

{ $APPTYPE CONSOLE}

{uses  
  SysUtils;} // disable for test

  procedure Test;
  var
    o: TObject;
  begin
    o := nil;

    o.UnitName;  // DO AV!

    writeln('The End');
  end;
begin
  Test;
end.

V uvedeném případě vyvolám chybu AV (přistupuji k neexistující instanci objektu). Toto je mimochodem ve windows provedeno tak, že první adresy v paměti jsou označeny flagem, který zakazuje běh programu. Ale to jsem odbočil.

Takže nyní máme jen uvedenou chybovou hlášku. Nyní je důležité najít inkriminovanou adresu. Pokud máte v tento okamžik možnost ladění (ať už tím, že to běží z IDE, nebo máte možnost provést připojení k běžícímu procesu přes Run - Attach to Process) tak zastavte program (nebo se připojte) a přes menu Search - Goto Address zadejte adresu (nezapomeňte na $ na začátku, bez něj nic nenajdete a IDE neřekne že to je neplatná adresa).

menu

Pokud tuto možnost nemáte, můžete zkusit spustit Váš program přes F8 (tj. krokování) a hned na začátku zadat hledanou adresu. Pokud se nic moc nezměnilo, máte velkou šanci, že se trefíte.

Dialog

Pokud IDE něco najde, přesune kurzor na vaši adresu v kódu nebo někde okolo.

Takto se mi už párkrát povedlo najít a vyřešit problém při konci programu.

Tagy: ,

Praxe

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců