Ladění aplikací v Caché Štefan Havlíček. Agenda Jednoduchá ukázka Jednoduchá ukázka Anatomie kódu Caché Anatomie kódu Caché Ladící prostředky Studia Ladící.

Slides:



Advertisements
Podobné prezentace
Web Michal Žůrek Jak se na něj dívám já..
Advertisements

Vlastní skript může být umístěn: v hlavičce stránky v těle stránky
Výukový program: Mechanik - elektrotechnik Název programu: Číslicová technika - mikroprocesory III. ročník Mikrořadiče Vypracoval : Vlastimil Vlček Projekt.
AJAX fenomén současného internetu Dalibor Kačmář Academic Developer Evangelist Microsoft ČR host Vítek Karas Senior Software Development Engineer Microsoft.
PowerDesigner 16.5 Ondřej Diviš.
MATLAB vytváření funkcí, grafika
Špička v každém směru IT 3 Produktivita práce s Eclipse.
Přednáška 11 Jiří Šebesta
Vstupy a výstupy v JavaScriptu Vstup: použitím metody prompt objektu window čtením hodnot z položek formuláře Výstup : použitím metody alert objektu window.
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
MICROSOFT BUSINESS INTELLIGENCE Pavel Cach Solution Specialist: BI, Aplikace
VISUAL BASIC Práce se soubory.
Práce se soubory. Ukládání dat Textové soubory s jednoduchou strukturou (např..txt a.csv) textové soubory s vnitřní hierarchií (např..xml) Soubory binárního.
„Programátor by měl být v prvé řadě líný.“. PIFovo Web API (API = Application Programming Interface)
C# pro začátečníky Mgr. Jaromír Osčádal
Příkazový řádek Windows
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
Programování v Pascalu Přednáška 7
Ing. Lukáš Burkoň Debugging 2. Testování 3. Unit testy 2.
Adobe Dreamweaver CS4 Ing. Martin Dosedla.
Caché Security. Jak vypadá zabezpečení dnes Jak bude vypadat a co by Caché měla umět v budoucnu Včera, dnes a zítra.
Příjemné novinky (kromě mnoha jiných) - automatický updatěe -- přestavitelmá velikost obsahu některých oken např Skore a Násobiče - působivé barevné a.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Koutek Obchodních inženýrů. Obsah Rekapitulace novinek v Caché 2007 Rekapitulace novinek v Caché 2007 Ensemble 2007 Ensemble 2007 Speedminer Speedminer.
C# - Exceptions (výjimky)
Milan Kryl(c) 2004 MFF UK Databáze Caché CSP Custom Tags vlastní značky.
PHP – Základy programování
4IT445 – Testování a ladění v PHP Ing. Jan Mittner
Ing. Jan Mittner Základy MVC 2. Rozšíření layoutu 3. helpery 4. Bootstrap a přepis URL adres 2.
Ant Připravil: Ing. Jan Kolomazník. strana 2 Proč vznikl Potřeba sestavovat komplexní Nezávisle na platformě Popis založený na xml Spouštění různých úloh.
1 © 2004, Cisco Systems, Inc. All rights reserved. CCNA 2 v3.1 Module 2 Introduction to Routers.
HUMUSOFT s.r.o. Konference WITNESS Setkání uživatelů programu WITNESS Hotel Dlouhé Stráně
Unifikovaná architektura databáze Katsiaryna Chernik.
C# - Testování a ladění aplikací Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
PictureBox u vkládání obrázků u vlastnost Picture pomocí příkazu LoadPicture u přiřazení obrázku mezi dvěma prvky PictureBox Auto.Picture = AutoCerv.Picture.
Dílna Caché II. CSP pro pokročilé Tomáš Vaverka. Zdroje HTML Tag Reference v sekci Reference Material v dokumentaci Caché HTML Tag Reference v sekci Reference.
Práce se šablonami v MS Word 2007
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost Číslo projektu: CZ.1.07/1.5.00/ Číslo materiálu: VY_32_INOVACE_PSK-4-09.
Hlášky Hlášky v JavaScriptu jsou trojího typu: Hlášky v JavaScriptu jsou trojího typu: Alert Alert Prompt Prompt Confirm Confirm Alert – zobrazí upozorňovací.
Heterogenní serverové prostředí, správa, bezpečnost a interoperabilita Jak zajistit interoperabilitu v hererogenním serverovém prostředí? Jak spolupracuje.
Logování AKORDu Vít Ochozka. K čemu nám slouží Odhalení chyb aplikace Odhalení chybné konfigurace Odhalení chybného chování konkrétního uživatele nebo.
VISUAL BASIC PRALG. 19. Chyby a ladění programu Kompilační chyby - chybná syntaxe, neexistující objekt, chybný parametr,... Run-time chyby - dochází k.
Šesté cvičení Výjimky Balíky.
Dynamic SQL P. Částek. Dynamic SQL Embedded SQL je překládaný preprocesorem => za běhu nelze nechat uživatele rozhodovat o vzhledu samotných SQL příkazů.
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost 1. KŠPA Kladno, s. r. o., Holandská 2531, Kladno,
Import záznamů diplomových prací nové řešení Antonín Vaishar, SUAleph, 26. –
Internet Explorer 8 Štěpán Bechynský Developer Evangelist Microsoft s.r.o.
Windows 7 & Internet Explorer 8 vývoj aplikací a kompatibilita Štěpán Bechynský, Ondřej Štrba Developer Evangelists
ADO.NET – object Connection Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
IDEA Web Systém 5.0 Pavel Bezstarosti IDEA spol. s r.o
16/04/20151 Výjimky a zpracování chyb (1) Výjimky (exceptions) dovolují tvorbu progra- mů, které mohou reagovat na různé chybové stavy vzniklé v jeho průběhu.
Programování POCSI. Programovani/POCSI2 Základní pojmy Akce - děj nad objekty, mající začátek a konec, a mající přesně definovaný účinek. Příkaz - popis.
Jak postupujeme vpřed v testování? Jak se nám daří vytvářet denní buildy? Stíháme opravovat chyby? Jak kvalitně chyby opravujeme?
Akademie ZENU Ukázková aplikace. Tak o tomhle to nebude…
Programová rozšíření funkcionality tvorby popisů v ArcGIS Ivan MATĚJČEK UP v Olomouci Katedra geoinformatiky Olomouc 2008.
5. Statistica Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová.
Kam se ubírá jazyk C#? Dr. Ing. Dalibor Kačmář Academic Developer Evangelist Developer & Platform Evangelist Group Microsoft Czech & Slovakia Anders Hejlsberg.
Operační systém GNU Linux Příkazy pro práci se soubory.
Visual Basic - programování
Testování s TestComplete
Computer visualization of relational database in www environment Radek Horáček Supervisor: ing. J. Blažej,Phd. Bachelor Thesis, Department of Physical.
JavaScript úvod. Jazyky webového vývojáře Dynamická stránka  aktivně mění svůj obsah v reakci na činnost uživatele  zpracování na straně serveru (PHP,
Miroslav Holec Software Developer & Consultant Monitoring a diagnostika aplikací s Application Insights 2015.
B AT SOUBORY Jednoduché skripty ve Windows. O PAKOVÁNÍ PŘÍKAZU OPAKUJ. off for /L %i in ( ) do ( echo *** echo %i echo *** ) Zápis: Opakuj.
Instalace Javy ( pro Windows )
Výukový materiál zpracován v rámci projektu
Databázové systémy a SQL
5. Statistica Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová.
Distribuovaný systém souborů
Transkript prezentace:

Ladění aplikací v Caché Štefan Havlíček

Agenda Jednoduchá ukázka Jednoduchá ukázka Anatomie kódu Caché Anatomie kódu Caché Ladící prostředky Studia Ladící prostředky Studia Pokročilé ladění Pokročilé ladění Zachytávání chyb a logování Zachytávání chyb a logování Ladění aplikací v Zenu Ladění aplikací v Zenu

Definice ladění Každý ví, že ladění je dvakrát tak náročné jako vlastní psaní programu. Takže, pokud jste tak chytří jak jen můžete být při psaní programu, jak ho vůbec můžete odladit? Brian Kernighan) Každý ví, že ladění je dvakrát tak náročné jako vlastní psaní programu. Takže, pokud jste tak chytří jak jen můžete být při psaní programu, jak ho vůbec můžete odladit? Brian Kernighan) Nejefektivnější ladícím nástrojem stále zůstává pečlivá úvaha doprovázená s rozmyslem umístěnými příkazy pro ladící výpisy. (Brian Kernighan) Nejefektivnější ladícím nástrojem stále zůstává pečlivá úvaha doprovázená s rozmyslem umístěnými příkazy pro ladící výpisy. (Brian Kernighan)

Prevence Dobře dokumentovaný kód Dobře dokumentovaný kód Error handling Error handling –Ověřování stavového kódu –Tradiční způsob ošetření chyb ($ETRAP, $ZTRAP ) –Try/Catch/Throw Robustní testování Robustní testování –UNIT testing

Unit testing Agilní programování Agilní programování Analogie xUnit testovacího frameworku Analogie xUnit testovacího frameworku Lze testovat: Lze testovat: –Třídy a metody Caché –Rutiny COS –SQL skripty

Unit testy … Postup: Postup: –Vytvoř třídu kterou chceš testovat –Vytvoř TestCase (testovací třídu) –Přidej do testovací třídy testovací metody testXXXX() –Vyexportuj testovací třídu jako XML –Nastav global ^UnitTestRoot –Z terminálu spusť %UnitTest.Manager.RunTest(nazev adresare s testy) –Kochej se výsledky

Unit testy … Základní metody testovací třídy TestCase se volají pomocí maker: Základní metody testovací třídy TestCase se volají pomocí maker: –$$$AssertEquals –$$$AssertNotEquals –$$$AssertStatusOK –$$$AssertStatusNotOK –$$$LogMessage Samotný test se spouští metodou RunTest() Samotný test se spouští metodou RunTest()

Ladění bez debuggeru S rozmyslem umístěné ladící tisky S rozmyslem umístěné ladící tisky –Výpis obsahu proměnných na terminál –Od nejjednodušších … w !, “Jmeno: ”_tJmenow !, “Jmeno: ”_tJmeno Set ^debug(counter) = valSet ^debug(counter) = val –K elegantním … Debugging macro v každé rutiněDebugging macro v každé rutině

O čem to vlastně je ? Zastav se Zastav se Rozhlédni se Rozhlédni se Pokračuj Pokračuj

Jednoduché ladění Jednoduchá třída s metodami spuštěná z terminálu Jednoduchá třída s metodami spuštěná z terminálu Vložení „break pointu“ do kódu Vložení „break pointu“ do kódu Základní příkazy pro ladění (B,S+,W, atd.) Základní příkazy pro ladění (B,S+,W, atd.)

Základní příkazy pro řádkové ladění Break- přeruší vykonávání kódu Break- přeruší vykonávání kódu Write- vypíše lokální proměnné Write- vypíše lokální proměnné Goto- pokračuj ve vykonávání kódu Goto- pokračuj ve vykonávání kódu B „S“, „S+“, …- jednokrokový režim B „S“, „S+“, …- jednokrokový režim Do %objlasterror- poslední chyba v objectsriptu Do %objlasterror- poslední chyba v objectsriptu

Prompt programátora do ##class(Debug.Sample).test() do ##class(Debug.Sample).test() write tSample.Name/0 } write tSample.Name/0 } ^ ^ ztest+5^Debug.Sample.1 ztest+5^Debug.Sample.1 ENTREE 4d1> ENTREE 4d1> write tSample.Name/0- chybová řádka write tSample.Name/0- chybová řádka - chybový kód - chybový kód ztest+5^Debug.Sample.1- poloha chybové řádky ztest+5^Debug.Sample.1- poloha chybové řádky 4d1>- informace zásobníku 4d1>- informace zásobníku

ztest+5^Debug.Sample.1 Kde to je schované?.OBJ kód.OBJ kód Debugger pracuje s.INT kódem Debugger pracuje s.INT kódem

ztest+5^Debug.Sample.1 Kde to je schované?... Ve Studiu Menu -> View -> View Other -> Debug.Sample.1.INT Ve Studiu Menu -> View -> View Other -> Debug.Sample.1.INT Do políčka napsat: ztest+5 Do políčka napsat: ztest+5

Zjednodušená anatomie kódu Caché.OBJ.OBJ –Tento typ kódu je vykonáván strojem Caché a je uložen v ^rOBJ globálu (je to „rutina“).INT.INT –Je kód, ze kterého je kompilován vykonavatelný kód.OBJ. Debugger pracuje s tímto kódem. V něm jsou všechna makra „rozbalena“.MAC.MAC –MAC, CLS … zdrojové kódy v Caché (mohou obsahovit i vložené SQL, XML, …)

Nastavení Studia pro generování kódu Keep generated source code („k“ příznak při kompilaci) Keep generated source code („k“ příznak při kompilaci) No optimization – zvyšuje čitelnost kódu No optimization – zvyšuje čitelnost kódu

Nastavení SQL pro generování kódu Retain SQL Statement as Comment Retain SQL Statement as Comment Cached Query – Save Source Cached Query – Save Source

Anatomie kódu - shrnutí Caché vykonává.OBJ kód Caché vykonává.OBJ kód Debugger pracuje s.INT kódem Debugger pracuje s.INT kódem Pro přístup k.INT kódu je potřeba někdy změnit konfiguraci systému, aby byl.INT kód přístupný Pro přístup k.INT kódu je potřeba někdy změnit konfiguraci systému, aby byl.INT kód přístupný

Ladění pomocí Studia Zastav se Zastav se –Breakpoint / Watchpoint –Připojení debuggeru k procesu –cstudio.exe /pid (cstudio.exe ? pro nápovědu) Rozhlédni se Rozhlédni se –Watch, Stack, Output Pokračuj Pokračuj –Step into/over … Run to …. Atd.

Breakpoint / Watchpoint Pravé tlačítko – Toggle Breakpoint Pravé tlačítko – Toggle Breakpoint Project -> Settings. Debugging Project -> Settings. Debugging

Zastav se: Run/Attach Run : Run : –Jen na lokálních stanicích –Debug->Debug Target –Project settings->Debug Target Attach to process Attach to process –Najdi ID procesu –Debug->Attach –cstudio.exe /pid

Identifikace ID procesu Každý proces má své unikátní ID Každý proces má své unikátní ID –Lišta terminálu –ID procesu OS –Systém Management Portal -> Processes

Studio – rozhlédni se Watch Watch –Promenné,globály,funkce –Okno Watch obsahuje seznam proměnných Stack Stack –Obsah proměnných na různých úrovních zásobníku Output window Output window –Lze použít jako konzoli (write, set, ….)

Studio – Jdi dál Run Run Stop Stop Step Into Step Into Step Over Step Over Step Out Step Out

Ladění pomocí ZBreak ZBreak location[:action:condition:execute_code] ZBreak location[:action:condition:execute_code] – Location ‍ tag+3^rou –breakpoint –*variable –watchpoint –$ -every line – Action "T"=Trace, "B"=Break (default), "N"=No action, "S”=Step etc. – Condition Special condition to break (i.e. name="BART") – Action Action to perform on break (i.e. x ^MyTraceCode)

ZBreak - příklady ‍ zb *%objlasterror ‍ zb *%objlasterror –Break on any changes to %objlasterror variable zb /TRACE:ON zb /TRACE:ON zb *name:"T":"name=""BART""" zb *name:"T":"name=""BART""" –Trace, but not break as name becomes "BART" ‍ set file="c:\test.txt" ‍ set file="c:\test.txt" open file:"WN" open file:"WN" zb /TRACE:ALL:file zb /TRACE:ALL:file –Record every single line of code executed to file

Ladící nástroje - porovnání

Pokročilé ladění objektů %Status –vrácen mnoha ‘%’ methodami jako např. %OpenId(), %Save() etc. %Status –vrácen mnoha ‘%’ methodami jako např. %OpenId(), %Save() etc. –%objlasterror –do $system.OBJ.DisplayError(sc,.err) –%SYSTEM.Status package Vypíše obsahy otevřených objektů Vypíše obsahy otevřených objektů –do $system.OBJ.ShowObjects() –do $system.OBJ.Dump(obj) –do $system.OBJ.ShowObjects("d")

Logování SQL ODBC Trasování (Windows) ODBC Trasování (Windows) ODBC Driver Configuration -> ODBC Log ODBC Driver Configuration -> ODBC Log ^%ISCLOG=0…3 ^%ISCLOG=0…3 –Ujistěte se, že je nasetovánozpět na 0 po ukončení laděn!!! Management Portal -> System Logs -> xDBC logs Management Portal -> System Logs -> xDBC logs

Zachytávání chyb a výjimek Caché Object Script Caché Object Script –ETrap –ZTrap –Try/Catch Nové od Nové od

Příklad na Try / Catch try { s b = 1/x } catch err { write "Error name:",err.Name,! write "Error code:",err.Code,! write "Error location:",err.Location,! write "Error data:",err.Data,! do BACK^%ETN } err –object of %Exception.SystemException class or custom %Exception.AbstractException subclass

^%ETN ^%ETN – chybový log aplikace. Zachytává pro pozdější analýzu chyby, informace o procesech a obsah zásobníku- ^%ETN – chybový log aplikace. Zachytává pro pozdější analýzu chyby, informace o procesech a obsah zásobníku- Lze použít společně s $ZTrap, $ETrap, Try/Catch Lze použít společně s $ZTrap, $ETrap, Try/Catch Vstupní body: Vstupní body: – do BACK^%ETN – capture error information (best if used within a trap) – set a=$$LOG^%ETN – capture current process information (no error required) Zobrazení logu: Zobrazení logu: –Do ^%ERN –Portál -> System Logs -> Application Error Log

Ladění Zenových aplikací Alerty v prostředí klienta (prohlížeče) Alerty v prostředí klienta (prohlížeče) –"Standardní" Console (závislé na prohlížeči) ‍ window.console.log( "Test" ); //output to JS console –JavaScript Debugger (FireBug/Visual Studio) debugger; –ZLM Client Side Library * * ZLM implemented in and documented in * ZLM implemented in and documented in

Zen Client Side Library (ZML) ZLM –browser independent console and library of Zen- specific trace functions ZLM –browser independent console and library of Zen- specific trace functions ZLM.cerr("output arbitrary text"); ZLM.cerr("output arbitrary text"); ZLM.dumpDOMTreeGeometry(document.body) ; ZLM.dumpDOMTreeGeometry(document.body) ; var comp = zenPage.getComponentById("txtErrorMessage"); var comp = zenPage.getComponentById("txtErrorMessage"); var div = comp.getEnclosingDiv(); var div = comp.getEnclosingDiv(); ZLM.dumpObj(div); ZLM.dumpObj(div); ZLM.dumpElementStyle(div); ZLM.dumpElementStyle(div);

Ladící konzole Zen

Doporučená četba Using Caché Object ScriptCh. Using Caché Object ScriptCh. –13. Error Processing –Ch. 14. Command Line Routine Debugging Using Caché StudioCh. Using Caché StudioCh. –16. Using the Studio Debugger Developing Zen Applications Developing Zen Applications –Ch. 8. Client Side Library->Debugging Client Side Code

e-Learning Recordings on debuggingDebugging Caché ObjectScript Routines Recordings on debuggingDebugging Caché ObjectScript Routines –Caché Objects –Debugging –SQL Performance and Debugging –Debugging ODBC (Windows/Unix) –CSP: Error Pages and Logging, Error Handling

A to je konec … Děkuji za pozornost Děkuji za pozornost Otázky? Otázky?