?_F˙˙˙˙W6-lĹ-™*WinSpector Help/&;)z4ŇŃęŃŘŃęŃŘŃęŃ˙˙ p ˙˙˙˙|CONTEXT&ö|CTXOMAP;ă|FONTQâ|KWBTREEČĺ|KWDATAŽă|KWMAPˇĺ|SYSTEM|TOPICu|TTLBTREE÷í|bm0Uţ|bm1•|bm2‰ęu;FěuŽŔ&ŠŽF‹ßG&ˆ˙vä˙vâč{ř‹Ç+Fć^_‹ĺ]ĘU‹ěƒěWV‹F‰Fô˙v ˙v šF˛‚ŸÄ^ &ƒŔ@2Fř%1Fř&ƒŔ@2Fú%1FúŠfű&ƒ ÉA2á%1FúŠFú&ƒÉAŃá2Á%1FúŠFú&ƒÉAŃáŃá2Á%1FúŠFúą&ƒŇBÓâ2Â%1FúŠFúą&ƒŇBÓâ2Â%1FúŠFúą&ƒŇBÓâ2Â% 1FúŠFúą&ƒ ŇBÓâ2Â%@1Fú‹Fú‰FňŠFňą&ƒ"ŇBÓâ2Â%€1FúŠfű&ƒ'ÉAŠéĐĺ2ĺ%1FúŠfű&Šo ĐĺĐĺ2ĺ% 1FúŠfűą&Šw*ŇÓâ2ć%1Fú&ƒ˙|.&?Ŕr%Ž^ ƒ|?@s‹-ŔŃŕÄ^&‰ƒFë$Ž^ ‹‹W-ÚŔŃŕŃŇ Ä^&‰&‰WƒF‹Fř‹VúÄ^ƒF&‰&‰WöFútV‹^ ƒ˙|,Ŕr#ƒ|@s‹G-ŔŃŕÄ^ƒF&‰ë!‹G‹W-ÚŔŃŕŃŇ Ä^ƒF&‰&‰WöFút5‹^ ƒŔ|ƒ@}ŠG,ŔĐŕÄ^˙F&ˆë‹G-ŔŃŕ Ä^ƒF&‰öFút6‹^ ƒŔ|ƒ@}ŠG,ŔĐŕÄ^˙F&ˆë‹G-ŔŃŕ Ä^ƒF&‰öFút6‹^ ƒŔ|ƒ@}ŠG,ŔĐŕÄ^˙F&ˆë‹G-ŔŃŕ Ä^ƒF&‰öFút6‹^ ƒŔ|ƒ@}ŠG,ŔĐŕÄ^˙F&ˆë‹G-ŔŃŕ Ä^ƒF&‰öFú t6‹^ ƒŔ|ƒ@}ŠG,ŔĐŕÄ^˙F&ˆë‹G-ŔŃŕ Ä^ƒF&‰öFú@t6‹^ ƒ Ŕ|ƒ @}ŠG ,ŔĐÜÝÓÝ˙˙˙˙ > ˙˙˙˙J1W˙˙˙˙˙˙˙˙˙˙˙˙JcHelp Contents7 ' € €<œ°œœ€‚˙Help Contents%řJŚ- (€ń€8°œœ€€€‚˙Click a topic listed below to see information about that topic. Read Essentials if you are new to WinSpector or new to this version of WinSpector. If you need information on using the Help system, return to the Help menu and choose Using Help.'Í$ €€œ€‚˙°SŚ}]#Š€¨Y˘>€€ŽœăŚ˜6€‡"€‰€‚˙ €€ŽœăŚ˜6‰‚˙˙˙Essentials and concepts you'll need to know for working with WinSpector.¤GÍ!]#Š€Y˘8€€Žœă6˘Ą;€‡"€‰‚˙&€ €Žœă6˘Ą;€‰‚˙˙˙Tasks and procedures you need to know when using WinSpector.˜;}š]#Š€xY˘>€€ŽœăşQÖꀇ"€‰€‚˙ €€ŽœăşQÖꉂ˙˙˙Glossary Definition of terms used in WinSpector.Şv!c4 8€ě€8°œœ€‚€€€€‚‚˙Shortcut: Use the Search button at the top of this Help window if you're ready to look for something by name.; šž1ă˙˙˙˙˙˙˙˙˙˙˙˙žFEssentials4 cŇ' €€<œ°œœ€‚˙Essentialst9žF; F€r€8°œœă\š=€‰‚ă0sB‰‚ă(֋‰‚‚˙IntroductionTOOLHELP.DLLOptimizing the Report= Ňƒ16˙˙˙˙˙˙˙˙˙˙˙˙ƒ|TOOLHELP.DLL6Fš' €€<œ°œœ€‚˙TOOLHELP.DLL܃|' €9€8°œœ€‚˙WinSpector uses TOOLHELP.DLL, a Microsoft Windows debugging utility. TOOLHELP.DLL must be from Windows version 3.1 or later and be included in your path.< š¸1$˙˙˙˙˙˙˙˙˙˙˙˙¸ŹDDFA Utility5|í' €€<œ°œœ€‚˙DFA Utility[.¸H- (€]€8°œœ€âI3‰‚˙The DFA utility post processes Turbo Debugger information gathered by WinSpector at the time of exception. WinSpector writes a WINSPCTR.BIN file at the time of exception if report information is set to PostMortem Dump. DFA can then be used to translate the WINSPCTR.BIN file into a useful format.4 í|' €€:˜°œœ€‚˙DFA OutputßHƒ ( €ż€8°œœ€‚‚˙The DFA utility writes a file only if Turbo Debugger information exists for the file in the stack frame. The DFA output file (DFA.OUT) has a stack trace similar to the one in the WinSpector log file, except that it has:°|3 1 2€ţ€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚ƒ‚˙-function names-line numbers-local and global variables-data segments and their values (including the stack segment).6ƒ i ( €€8°œœ€‚‚˙After a WINSPCTR.BIN file has been used, you may want to rename or delete the DFA.OUT and WINSPCTR.LOG files. A WINSPCTR.BIN file is written for each Windows session. Renaming DFA.OUT and WINSPCTR.LOG allows SinSpector to handle more than one exception in a session.@3 Š ' €2€:˜°œœ€‚˙Used with WINSPCTR.LOGCi ě - (€-€8°œœ€â¸Aoo‰‚˙When used with the WINSPCTR.LOG file alone, DFA gives minimal stack trace information, such as addresses. Source filenames and line numbers are added to the report when Turbo Debugger information (a .tds file) is present either in the executable file or in a separate file.@Š , ' €2€:˜°œœ€‚˙Used with WINSPCTR.BIN‚Vě Ž , (€Ź€8°œœ€âI3‰‚˙When used with the WINSPCTR.BIN file, DFA makes additional information available.ž‘, l- (€#€x°ěœ^‚l€ƒ‚ƒ‚˙-Stack based variables are added to the log, including structures and arrays.-Variable types, values, and addresses are listed by function.wPŽ ă' € €8°œœ€‚‚˙If a Turbo Debugger .tds file is present, for each stack frame, DFA reports:5l' €€:˜°Čœ€‚˙Section onem=ă…0 0€z€x°ěœ^‚l€ƒ‚ƒ‚ƒ‚ƒ‚˙-source file-line number-local variables-parameters5ş' €€:˜°Čœ€‚˙Section twoŤy…q@2 4€ň€x°ěœ^‚l€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚˙-module name for tşq@|he task with the fault-filenames-logical segments-their selectors-whether it's data or code7ş¨@' € €:˜°Čœ€‚˙Section threezLq@"A. ,€˜€x°ěœ^‚l€ƒ‚ƒ‚ƒ‚˙-global variables-static variables-their values at time of exception0 ¨@RA' €€:˜°œœ€‚˙SyntaxY."AŤA+ &€\€x°Čœ^„Hl€ƒ‚˙DFA [option] [WINSPCTR.BIN]šRAmB( €5€8°œœ€‚‚˙The WINSPCTR.LOG file is required. With WINSPCTR.LOG, you get sourcefile and line numbers. With WINSPCTR.BIN (optional), you get variable information.G ŤA´B' €@€:˜°œœ€‚˙Command line options for DFA:ćmBÄC* "€Í€8°œœ€‚‚‚‚˙/0[outputfile] (DFA.OUT default)/D (forces DFA to write out a hex dump of the saved data segments)Since DFA is used outside of WinSpector, to print this topic for future reference, choose Print Topic from the Help File menu.8´BüC' €"€:˜°œœ€‚˙Related Topics°gÄCŹDI b€Î€8°œœă‰Lƒ€‰‚ă~CŔ‰‚㔾‰‚ă¸S‰‚ăßçý‰‚‚˙BUILDSYM UtilityEXEMAP UtilityInterpreting the log filePostMortem DumpTMAPSYM Utility6üCâD1ˆ˙˙˙˙˙˙˙˙˙˙˙˙âD4GTasks/ŹDE' €€<œ°œœ€‚˙Tasks#ŹâD4Gw ź€Y€x°Čœ^„HlăŔŤœl€‰‚ă‰Lƒ‰‚ăßçý‰‚ă~CŔ‰‚ăqIŚą‰‚㔾‰‚ă(֋‰‚ă7”‰‚ăZY`<‰‚ă˛Kýó‰‚ă\š=‰‚˙Creating .SYM files - an overview Creating .SYM files with the BUILDSYM utility Creating .SYM files from existing .MAP files Creating .MAP files for Windows format files Creating Turbo Debugger Information Interpreting the log file Optimizing the report Post processing Turbo Debugger information with the DFA Utility Setting Preferences Understanding addresses and selectors Using WinSpector DExG10˙˙˙˙˙˙˙˙˙˙˙˙xGdJSetting Preferences=4GľG' €,€<œ°œœ€‚˙Setting PreferencesŃŁxG†H. *€G€8°œœ€âs8I3‰‚‚˙WinSpector's options can be set either in the Preferences dialog box or by entering commands directly into the WINSPCTR.INI file. Both methods are explained. ľGŽIh ž€A€x°Čœ^„Hlă]rxd€‰‚ăr@+R‰‚ăÂ÷í`‰‚ă[çń‰‚ăŔ:‰‚ăJÜď͉‚ă¸S‰€‚ăˏŚd€‰‚˙DirectoryViewerAppend New Reports/Overwrite Previous ReportSystem InformationAUX SummaryStack Frame DataPostMortem DumpUser comments8†HĆI' €"€:˜°œœ€‚˙Related Topicsž`ŽIdJ> L€Ŕ€x°Čœ^„HlăCTů9€‰‚㔾‰‚ă(֋‰‚˙WINSPCTR.INI file - Setting PreferencesInterpreting the log fileOptimizing the report: ĆIžJ1\˙˙˙˙˙˙˙˙˙˙˙˙žJŔMDirectory3 dJŃJ' €€<œ°œœ€‚˙DirectoryÔ­žJĽK' €[€8°œœ€‚˙The Directory option in the Preferences dialog box lets you decide where the log file is written. If you do not specify a directory, it defaults to the Windows directory.AŃJćK' €4€:˜°œœ€‚˙To specify a directory:ŁsĽK‰L0 0€ć€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚‚˙1Open the Preferences Dialog Box.2Enter the directory name in the Directory text box.3Click the OK button.nBćK÷L, (€„€8°œœ€âs8I3‰‚˙You can also add LogDir=[directory] to the WINSPCTR.INI file.8‰L/M' €"€:˜°œœ€‚˙Related Topics‘V÷LŔM; F€Ź€8°œœăCTů9€‰‚ăŠUô%‰‚ăZY`<‰‚‚˙WINSPCTR.INI file - Setting PreferencesHelp ContentsPreferences - Setting 7/M÷M1Â˙˙˙˙˙˙˙˙˙˙˙˙÷MŽ‚Viewer0 ŔM'N' €€<œ°œœ€‚˙ViewerI÷M|€+ $€=€8°œœ€‚‚‚‚‚˙The Viewer option in the Preferences dialog box is where you specify what program to use for viewing the log file. If you do not specify a directory, it defaults to Window's Notepad.If an exception has occurred during the current Windows session, click View Log on the Latest UAE dialog box or the Preferences dialog box to see the log file. View Log runs the selected viewing program and passes the WINSPCTR.LOG file as a comm'N|€ŔMand line argument.To view a previous log file, choose View Log file from the WinSpector pop up Windows menu.>'Nş€' €.€:˜°œœ€‚˙To specify a viewer:˜h|€R0 0€Đ€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚‚˙1Open the Preferences Dialog Box.2Enter the viewer in the Viewer text box.3Click the OK button.sGş€Ĺ, (€Ž€8°œœ€âs8I3‰‚˙You can also add LogViewer=[viewer name] to the WINSPCTR.INI file.8Rý' €"€:˜°œœ€‚˙Related Topics‘VŁŽ‚; F€Ź€8°œœăCTů9€‰‚ăŠUô%‰‚ăZY`<‰‚‚˙WINSPCTR.INI file - Setting Preferences Help ContentsPreferences - Setting^-ýě‚1*˙˙˙˙˙˙˙˙˙˙˙˙삸ˆAppend New Reports/Overwrite Previous ReportsV/Ž‚Bƒ' €^€<œ°œœ€‚˙Append New Reports/Overwrite Previous Report ăě‚N…) €Ç€8°œœ€‚‚‚˙The Append New Reports and Overwrite Previous Reports options in the Preferences dialog box let you either append reports to the previous log file or overwrite the previous log file when a new report is generated. The default setting is to overwrite the previous log file.If you choose to overwrite the previous log file, the first time an exception occurs, the previous log file is overwritten. Subsequent exceptions that occur during the same Windows session will be appended.U.BƒŁ…' €\€:˜°œœ€‚˙To append reports to the previous log file:“cN…6†0 0€Ć€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚‚˙1Open the Preferences Dialog Box.2Set Log File to Append New Reports.3Click the OK button.j>Ł… †, (€|€8°œœ€âs8I3‰‚˙You can also add CreateNewLog=0 to the WINSPCTR.INI file.M&6†í†' €L€:˜°œœ€‚˙To overwrite the previous log file:›k †ˆ‡0 0€Ö€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚‚˙1Open the Preferences Dialog Box.2Set Log File to Overwrite Previous Reports.3Click the OK button.j>í†ň‡, (€|€8°œœ€âs8I3‰‚˙You can also add CreateNewLog=1 to the WINSPCTR.INI file.8ˆ‡*ˆ' €"€:˜°œœ€‚˙Related TopicsŽTň‡¸ˆ: D€¨€8°œœăCTů9€‰‚ăŠUô%‰‚ăZY`<‰‚˙WINSPCTR.INI file - Setting PreferencesHelp ContentsPreferences - SettingC*ˆűˆ1˙˙˙˙˙˙˙˙ ˙˙˙˙űˆ×System Information<¸ˆ7‰' €*€<œ°œœ€‚˙System Information ĺűˆCŠ' €Ë€8°œœ€‚˙The System Information option in the Preferences dialog box lets you add the Task List, the Module List, and information about the USER and GDI heaps to the log file. The default is to include system information in the report.T-7‰—Š' €Z€:˜°œœ€‚˙To add system information to the log file:¤tCŠ;‹0 0€č€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚‚˙1Open the Preferences Dialog Box.2Under Report Information, check the System Info box.3Click the OK button.l@—Š§‹, (€€€8°œœ€âs8I3‰‚˙You can also add ShowSystemInfo=1 to the WINSPCTR.INI file.W0;‹ţ‹' €`€:˜°œœ€‚˙To omit system information from the log file:§w§‹ĽŒ0 0€î€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚‚˙1Open the Preferences Dialog Box.2Under Report Information, uncheck the System Info. box.3Click the OK button.l@ţ‹, (€€€8°œœ€âs8I3‰‚˙You can also add ShowSystemInfo=0 to the WINSPCTR.INI file.8ĽŒI' €"€:˜°œœ€‚˙Related TopicsŽT×: D€¨€8°œœăCTů9€‰‚ăŠUô%‰‚ăZY`<‰‚˙WINSPCTR.INI file - Setting PreferencesHelp ContentsPreferences - Setting< IŽ1c˙˙˙˙˙˙˙˙ ˙˙˙˙ŽFĂAUX Summary5׍HŽ' €€<œ°œœ€‚˙AUX Summary˜qŽŕ' €ă€8°œœ€‚˙The AUX Summary option in the Preferences dialog box lets WinSpector write an abbreviated form of the report to the standard DOS file AUX (called STDAUX in the C library), in addition to writing the complete log file. To use this option, you need a device driver that redirects AUX to a second monitor or a terminal connected to AUX. The default is no output to AUX.:HŽ&Ŕ' €&€:˜°ŕ&Ŕ׍œœ€‚˙To write to AUX:¤tŕĘŔ0 0€č€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚‚˙1Open the Preferences Dialog Box.2Under Report Information, check the AUX summary box.3Click the OK button.i=&Ŕ3Á, (€z€8°œœ€âs8I3‰‚˙You can also add LogToStdAux=1 to the WINSPCTR.INI file.>ĘŔqÁ' €.€:˜°œœ€‚˙To not write to AUX:Śv3ÁÂ0 0€ě€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚‚˙1Open the Preferences Dialog Box.2Under Report Information, uncheck the AUX summary box.3Click the OK button.i=qÁ€Â, (€z€8°œœ€âs8I3‰‚˙You can also add LogToStdAux=0 to the WINSPCTR.INI file.8¸Â' €"€:˜°œœ€‚˙Related TopicsŽT€ÂFĂ: D€¨€8°œœăCTů9€‰‚ăŠUô%‰‚ăZY`<‰‚˙WINSPCTR.INI file - Setting PreferencesHelp ContentsPreferences - Setting@¸Â†Ă1×˙˙˙˙˙˙˙˙ ˙˙˙˙†ĂÉPostMortum Dump9FĂżĂ' €$€<œ°œœ€‚˙PostMortem DumpՆÄĹ5 8€!€8°œœ€âI3‰‚‚âgoo‰‚˙The PostMortem Dump option in the Preferences dialog box generates a WINSPCTR.BIN file.The DFA utility takes a WINSPCTR.BIN file and Turbo Debugger information (.tds files). and translates the raw binary data into a useful form. It generates a file that contains stack trace similar to the one in the log file, but with function names and line numbers, as well as local and global variables.J#żĂÎĹ' €F€:˜°œœ€‚˙To generate a WINSPCTR.BIN file:n„ĹkĆ/ .€Ü€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚˙1Open the Preferences Dialog Box.2Under Report Information check PostMortem Dump.3Click the OK button.nAÎĹŮĆ- *€‚€8°œœ€‚âs8I3‰‚˙You can also add PostMortemDump=1 to the WINSPCTR.INI file.[4kĆ4Ç' €h€:˜°œœ€‚˙To inhibit the generation of a WINSPCTR.BIN file:˘rŮĆÖÇ0 0€ä€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚‚˙1Open the Preferences Dialog Box.2Under Report Information, uncheck PostMortem Dump.3Click the OK button.l@4ÇBČ, (€€€8°œœ€âs8I3‰‚˙You can also add PostMortemDump=0 to the WINSPCTR.INI file.8ÖÇzČ' €"€:˜°œœ€‚˙Related TopicsŁbBČÉA R€Ä€8°œœă7”€‰‚ăCTů9‰‚ăŠUô%‰‚ăZY`<‰‚˙DFA UtilityWINSPCTR.INI file - Setting PreferencesHelp ContentsPreferences - SettingAzČ^É1o˙˙˙˙˙˙˙˙ ˙˙˙˙^ÉjStack Frame Data:ɘÉ' €&€<œ°œœ€‚˙Stack Frame Data ä^ÉŁË' €É€8°œœ€‚˙The Stack Frame Data option in the Preferences dialog box lets you add a verbose stack trace display to the log file. For each stack frame that doesn't exceed 256 bytes, a hex dump is performed, starting at the SS:BP for that frame. If there are > 256 bytes between 2 successive stack frames, the memory display is omitted for that frame. This data can be used to get the values of parameters that were passed to the function. The default is to not generate a verbose stack trace.á˜É˛Ě. *€Ă€8°œœ€‚âgoo‰‚˙It is usually easier to let the DFA utility do the hard work of figuring out what your parameters are. However, for those cases where you do not have Turbo Debugger information available, a verbose trace may be helpful.R+ŁËÍ' €V€:˜°œœ€‚˙To add Stack Frame Data to the log file:Šy˛Ě­Í0 0€ň€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚‚˙1Open the Preferences Dialog Box.2Under Report Information, check the Stack Frame Data box.3Click the OK button.k?ÍÎ, (€~€8°œœ€âs8I3‰‚˙You can also add ShowStackInfo=1 to the WINSPCTR.INI file.U.­ÍmÎ' €\€:˜°œœ€‚˙To omit Stack Frame Data from the log file:Ť{ÎĎ0 0€ö€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚‚˙-Open the Preferences Dialog Box.-Under Report Information, uncheck the Stack Frame Data box.-Click the OK button.k?m΃Ď, (€~€8°œœ€âs8I3‰‚˙You can also add ShowStackInfo=0 to the WINSPCTR.INI file.8ĎťĎ' €"€:˜°œœ€‚˙Related TopicsŁbƒĎjA R€Ä€8°œœă7”€‰‚ăCTů9‰‚ăŠUô%‰‚ăZY`<‰‚˙DFťĎjÉA UtilityWINSPCTR.INI file - Setting PreferencesHelp ContentsPreferences - Setting> ťĎ¨1r˙˙˙˙˙˙˙˙ ˙˙˙˙¨ÜUser Comments7jß' € €<œ°œœ€‚˙User CommentsoH¨N' €‘€8°œœ€‚˙The User Comments option in the Preferences dialog box lets you enter information about what was happening at the time of the exception. A dialog box is displayed immediately after the exception log is written and comments about what was happening can be entered at that time. Your comments are then appended to the log file.O(ߝ' €P€:˜°œœ€‚˙To add user comments to the log file:ŚvNC0 0€ě€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚‚˙1Open the Preferences Dialog Box.2Under Report Information, check the User Comments box.3Click the OK button.j>­, (€|€8°œœ€âs8I3‰‚˙You can also add ShowUserInfo=1 to the WINSPCTR.INI file.R+C˙' €V€:˜°œœ€‚˙To omit user comments from the log file:­}­Ź0 0€ú€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚‚˙1Open the Preferences Dialog Box.2Under Report Information, uncheck the User comments data box.3Click the OK button.j>˙, (€|€8°œœ€âs8I3‰‚˙You can also add ShowUserInfo=0 to the WINSPCTR.INI file.8ŹN' €"€:˜°œœ€‚˙Related TopicsŽTÜ: D€¨€8°œœăCTů9€‰‚ăŠUô%‰‚ăZY`<‰‚˙WINSPCTR.INI file - Setting PreferencesHelp ContentsPreferences - SettingFN"1˙˙˙˙˙˙˙˙˙˙˙˙"ńOptimizing the Report?Üa' €0€<œ°œœ€‚˙Optimizing the ReportŽr"< F€ĺ€8°œœ€âĐ$ډ‚‚ăŔŤœl‰‚ăqIŚą‰‚˙The availability of .SYM files and Turbo Debugger information greatly enhances the WinSpector error report log file. There are utilities available to create and use both kinds of symbolic information. Click the underlined text to find out more about creating and using .SYM files and Turbo Debugger information..Sym Files - CreatingTurbo Debugger Information8aG' €"€:˜°œœ€‚˙Related TopicsŞbńH `€Ä€8°œœă‰Lƒ€‰‚ă7”‰‚ă~CŔ‰‚㔾‰‚ăßçý‰‚˙BUILDSYM UtilityDFA UtilityEXEMAP UtilityInterpreting the log fileTMAPSYM UtilityAG2 1| ˙˙˙˙˙˙˙˙˙˙˙˙2 bDBUILDSYM Utility:ńl ' €&€<œ°œœ€‚˙BUILDSYM Utility;2 § ' €(€:˜°œœ€‚˙What BUILDSYM is:ýÍl ¤ 0 .€›€8°œœ€âĐ$ډ‚‚‚‚˙The BUILDSYM utility offers a convenient way to create .SYM files for one or several programs in a directory.When .SYM files are not available, creating them without BUILDSYM is a two step process:ť§ _ : B€€x°Čœ^„Hl€ƒâBőz‰‚ƒââżY‰‚˙1Use the EXEMAP utility on the program to make a .MAP file2Use the TMAPSYM utility on the .MAP file to make a .SYM fileO%¤ Ž * "€K€8°œœ€‚‚‚‚˙BUILDSYM uses EXEMAP and TMAPSYM, but you enter only one command to complete the process. BUILDSYM also erases .MAP files from your directory after .SYM files are created. BUILDSYM's support for wild cards in the syntax lets you create .SYM files for part or all of a directory by entering a single command.BUILDSYM requires that EXEMAP and TMAPSYM utilities be in your search path. Resulting .SYM files are placed in the current directory. In order for WinSpector to find a .SYM file, it must be in the same directory as the Windows program.<_ ę ' €*€:˜°œœ€‚˙What BUILDSYM does¤nŽ Ž6 :€Ý€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚˙-BUILDSYM verifies that the target files are really windows files (if they're not, BUILDSYM leaves them alone)-BUILDSYM calls EXEMAP to create .MAP files-BUILDSYM verifies that .MAP files were created-BUILDSYM calls TMAPSYM, passing the names of the new .MAP files-TMAPSYM creates .SYM files-BUILDSYM deletes the .MAP files (which are no longer needed)0 ę ž' €€:˜°œœ€‚˙Syntax‰[ŽS@. ,€ś€x°Čœ^„Hl€ƒƒ‚‚‚˙BUILDSYMfilenamežS@ń(DOS wildcards are supported in the filename portion of the syntax.).ž@' €€:˜°œœ€‚˙Tipsg<S@čB+ $€y€8°œœ€‚‚‚‚‚˙BUILDSYM is particularly useful if you don't have the Microsoft Software Development Kit (SDK) or even if you have SDK, but want additional information like references to otherwise undocumented functions.Borland precompiled header files use a .SYM extention and could be inadvertently overwritten when generating a .SYM file. If you are using the command line compiler, there is an option to rename the header file so that there is no naming conflict.BUILDSYM overwrites any existing .SYM file. To be safe, copy existing .SYM files before using BUILDSYM or TMAPSYM.Ż‡@—C( €€8°œœ€‚‚˙Since BUILDSYM is used outside of WinSpector, to print this topic for future reference, choose Print Topic from the Help File menu.8čBĎC' €"€:˜°œœ€‚˙Related Topics“Q—CbDB T€˘€8°œœă7”€‰‚ă~CŔ‰‚㔾‰‚ăßçý‰‚‚˙DFA Utility EXEMAP UtilityInterpreting the log fileTMAPSYM Utility@ĎC˘D1i˙˙˙˙˙˙˙˙˙˙˙˙˘DËLTMAPSYM Utility:bDÜD' €&€<œ°œœ€‚˙ TMAPSYM Utility5˘DE' €€:˜°œœ€‚˙What it is:}PÜDŽF- (€Ą€8°œœ€âĐ$ډ‚˙TMAPSYM creates .SYM files from existing .MAP files (created either by TLINK or by the EXEMAP utility). The resulting .SYM files make public functions, variable names, and functions in the entry table of the executable available to WinSpector. Constants and line number information is not included in a TMAPSYM generated .SYM file.0 EžF' €€:˜°œœ€‚˙SyntaxHŽFG- *€6€x°Čœ^„Hl€ƒƒ‚‚˙TMAPSYMfilename.[MAP]H"žFNG& €D€8°œœ€‚˙The .MAP extention is optional./G}G' €€:˜°œœ€‚˙Tips:d;NGáI) €w€8°œœ€‚‚‚˙When .MAP files are not available, the BUILDSYM utility lets you use a single command to create .SYM files for programs. BUILDSYM uses both EXEMAP (to make the .MAP files) and TMAPSYM (to make the .SYM files). BUILDSYM works on one, several, or all files in a directory.Used in harmony with each other, the three WinSpector utilities (EXEMAP, TMAPSYM, and BUILDSYM) are particularly useful if you don't have the Microsoft Software Development Kit (SDK) or even if you have the SDK, but want additional information like references to otherwise undocumented functions.ó}GL, &€ç€8°œœ€‚‚‚‚‚‚˙Borland precompiled header files use a .SYM extention and could be inadvertently overwritten when generating a .SYM file. If you are using the command line compiler, there is an option to rename the header file so that there is no naming conflict.BUILDSYM overwrites any existing .SYM file. To be safe, copy existing .SYM files before using BUILDSYM or TMAPSYM.Since TMAPSYM is used outside of WinSpector, to print this topic for future reference, choose Print Topic from the Help File menu.8áI8L' €"€:˜°œœ€‚˙Related Topics“QLËLB T€˘€8°œœă‰Lƒ€‰‚ă7”‰‚ă~CŔ‰‚㔾‰‚‚˙BUILDSYM UtilityDFA UtilityEXEMAP UtilityInterpreting the log file?8L M1O˙˙˙˙˙˙˙˙˙˙˙˙ M…EXEMAP Utility9ËLCM' €$€<œ°œœ€‚˙ EXEMAP Utility5 MxM' €€:˜°œœ€‚˙What it is:řÉCMpO/ ,€“€8°œœ€âĐ$ډ‚‚‚˙EXEMAP creates .MAP files for Windows format files. A .MAP file can be used to create a .SYM file, which can then be used by WinSpector to enhance the error reporting. This can be especially useful for use on window .DLL files or other programs for which the source or a .MAP file is not readily available.Although the resulting .MAP file can not be as complete as one generated by the linker, it does include addresses for exported public functions.0 xM O' €€:˜°œœ€‚˙Syntax°‰pO\€' €€8°œœ€‚˙There is a command line option that lets you specify an  O\€ËLoutput file name. If no output file name is given, exefile.MAP is the default.W* Oł€- *€T€x°Čœ^„Hl€‚ƒƒ‚˙EXEMAP [output mapfile]nG\€!' €Ž€8°œœ€‚‚˙If [output mapfile] is not given, it defaults to "exefilename.map"..ł€O' €€:˜°œœ€‚˙Tips>!ƒ) €+€8°œœ€‚‚‚˙The BUILDSYM utility lets you use a single command to create .SYM files for programs. BUILDSYM uses both EXEMAP (to make the .MAP files) and TMAPSYM (to make the .SYM files). BUILDSYM works on one, several, or all files in a directory.Used in harmony with each other, the three WinSpector utilities (EXEMAP, TMAPSYM, and BUILDSYM) are particularly useful when you don't have the Microsoft Software Development Kit (SDK) or if you have the SDK, but want additional information like references to otherwise undocumented functions.­…O:„( € €8°œœ€‚‚˙Since EXEMAP is used outside of WinSpector, to print this topic for future reference, choose Print Topic from the Help File menu.8ƒr„' €"€:˜°œœ€‚˙Related Topics”R:„…B T€¤€8°œœă‰Lƒ€‰‚ă7”‰‚㔾‰‚ăßçý‰‚‚˙BUILDSYM UtilityDFA UtilityInterpreting the log fileTMAPSYM UtilityJr„P…1ç˙˙˙˙˙˙˙˙˙˙˙˙P…í‡Interpreting the Log FileD…”…' €:€<œ°œœ€‚˙ Interpreting the Log File]6P…ń…' €l€8°œœ€‚‚˙To get help on an item, click the underlined text.eV‡w ź€Ý€x°Čœ^„Hlă˛Kýó€‰‚ăŒ ł¨‰‚ă `4‰‚ă…’ćA‰‚ăľlщ‚ăĆKł‡‰‚ăibd‰‚ăÂ:™‰‚ăÁ„’‰‚ăďSŤr‰‚ăÉoyƉ‚˙Addresses and SelectorsFirst line of logSecond line of logDisassembly SectionStack Trace SectionRegister SectionMessage QueueTasks SectionModules SectionUSER and GDI InformationSystem Information Section8ń…Ž‡' €"€:˜°œœ€‚˙Related Topics_,V‡í‡3 6€X€8°œœă>‹€‰‚ă(֋‰‚˙Exception TypesOptimizing the ReportHŽ‡5ˆ1´˙˙˙˙˙˙˙˙˙˙˙˙5ˆĄŠAddresses and SelectorsBí‡wˆ' €6€<œ°œœ€‚˙ Addresses and Selectors‰V5ˆŠ3 4€­€8°œœ€âČLŚ‰âĘ9°Ů‰‚˙The concept of address and selectors is important in understanding the log file. Windows .EXE files, refered to as New EXE files, have a unique format. In the log file, addresses are given in terms of logical addresses and physical addresses (or selectors). The logical address appears first, followed by the physical address in ( )'s.8wˆ8Š' €"€:˜°œœ€‚˙Related Topicsi6ŠĄŠ3 6€l€8°œœă”ľ€‰‚ă(֋‰‚˙Interpreting the log fileOptimizing the ReportB8ŠăŠ1z˙˙˙˙˙˙˙˙˙˙˙˙ăŠŒFirst Line of Log;ĄŠ‹' €(€<œ°œœ€‚˙First Line of Log{U㊙‹& €Ş€8°œœ€‚˙The first line in the log file gives the date and time that the exception occured.8‹ы' €"€:˜°œœ€‚˙Related TopicsJ™‹Œ, (€<€8°œœă”ľ€‰‚˙Interpreting the log fileCы^Œ1˙˙˙˙˙˙˙˙˙˙˙˙^Œ-Second Line of Log<ŒšŒ' €*€<œ°œœ€‚˙Second Line of Log@^Œڌ' €2€8°œœ€‚‚˙The second line listsż‹šŒ™4 6€€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚˙-what type of exception occured-the module name-the logical address-the physical address-the current task at time of exception.ůŃڌ’Ž( €Ł€8°œœ€‚‚˙If the stack pointer is too small at time of exception, TOOLHELP. DLL automatically switches the stack. When this happens, the message "Stack Switched" is appended to the end of the second line of the log.8™ʎ' €"€:˜°œœ€‚˙Related Topicsc0’Ž-3 6€`€8°œœă>‹€‰‚㔾‰‚˙Exception TypesInterpreting the log fileDʎq1Ţ˙˙˙˙˙˙˙˙˙˙˙˙qÂÄStack Trace Section=-Ž' €,€<œ°œœ€‚˙Stack Trace Sectionׯq‘Ŕ( €_€8°œœ€‚‚˙The first line of the Stack Trace sectionŽ‘Ŕ- of the log identifies the function or procedure that was executing at the time of the exception. Stack Trace information includesœbŽ-Â: B€Ĺ€x°Čœ^„Hl€ƒ‚ƒ‚ƒâĐ$ډ‚ƒ‚ƒ‚˙-frame number-module name-the name of the closest function before the address of the one that caused the exception, plus a number indicating how far away you were from that function (this information is present only if a .SYM file is present)-logical and physical address for the stack frame-where your program comes back to after the call.Ő­‘ŔÄ( €[€8°œœ€‚‚˙When WinSpector gives function names, it looks in the .SYM file for the closest symbol name that appears before the address in the call stack. Some .SYM files do not contain information for all functions. Thus, the function name appearing in the log file will be that of the closest function in the .SYM file with an address preceding the frame address. If the offset field appears to be too high, function names are suspect.8-Â:Ä' €"€:˜°œœ€‚˙Related TopicsˆNÄÂÄ: D€œ€8°œœă”ľ€‰‚ă(֋‰‚ăŔŤœl‰‚˙Interpreting the log fileOptimizing the Report.Sym Files - CreatingD:ÄĹ1e˙˙˙˙˙˙˙˙˙˙˙˙Ĺ'ÇDisassembly Section=ÂÄCĹ' €,€<œ°œœ€‚˙Disassembly Sectionb9ĹĽĆ) €s€8°œœ€‚‚‚˙The first line of the disassembly section in the log file identifies the assembly language instruction that caused the exception.This is followed by the next few instructions in the program. These subsequent commands are listed to provide a point of reference for finding the task which caused the exception.8CĹÝĆ' €"€:˜°œœ€‚˙Related TopicsJĽĆ'Ç, (€<€8°œœă”ľ€‰‚˙Interpreting the log fileAÝĆhÇ1â˙˙˙˙˙˙˙˙˙˙˙˙hÇ ÉRegister Section:'ǢÇ' €&€<œ°œœ€‚˙Register SectionĺžhLJČ' €}€8°œœ€‚˙The register section of the log file gives the values that are in the standard registers at the time of exception. Limits and access rights are given for the CS, DS, ES, and SS registers.8˘ÇżČ' €"€:˜°œœ€‚˙Related TopicsJ‡Č É, (€<€8°œœă”ľ€‰‚˙Interpreting the log fileFżČOÉ1ĺ˙˙˙˙˙˙˙˙˙˙˙˙OÉîĚMessage Queue Section? ÉŽÉ' €0€<œ°œœ€‚˙Message Queue Section öOÉŽĘ* "€í€8°œœ€‚‚‚‚˙The message queue section of the log file gives the last message actually received in the middle of processing. Also given is a list of any messages that were waiting in the queue at the time of exception.Listed is the following informationš‰ŽÉgË0 .€€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚˙-window handle (identifies what window)-message ID number (identifies what it was)-two parameters (present for any given window).ÝŽĘlĚ( €ť€8°œœ€‚‚˙What is recorded in the message queue section may not really be the last message the program received. Windows may bypass the message queue, i.e., SendMessage(). Keep that in mind when using message queue information.8gˤĚ' €"€:˜°œœ€‚˙Related TopicsJlĚîĚ, (€<€8°œœă”ľ€‰‚˙Interpreting the log file> ¤Ě,Í1d˙˙˙˙˙˙˙˙˙˙˙˙,ÍRĎTasks Section7îĚcÍ' € €<œ°œœ€‚˙Tasks Section›r,ÍţÍ) "€ä€8°œœ€‚‚‚‚˙The Tasks section of the log file lists all programs running in the system at the time of exception.Given isҞcÍĐÎ4 6€=€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚˙-complete path for executor file-module name-windows module handle-task handle-what the data segment value was for the task (the instance handle).8ţÍĎ' €"€:˜°œœ€‚˙Related TopicsJĐÎRĎ, (€<€8°œœă”ľ€‰‚˙Interpreting the log fileNĎ Ď1“˙˙˙˙˙˙˙˙˙˙˙˙ ĎšModules Section - Stack Trace9RĎŮĎ' €$€<œ°œœ€‚˙Modules Sectionf Ďt) "€Ě€8°œœ€‚‚‚ŮĎtRĎ‚˙The Modules section of the log lists the modules that were running at time of exception.Given isÍŮĎ76 :€€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚˙-path for executor file-the date-the file size-module name-module handle-reference count (how many times the module is in use).8to' €"€:˜°œœ€‚˙Related TopicsJ7š, (€<€8°œœă”ľ€‰‚˙Interpreting the log fileNo1Ń˙˙˙˙˙˙˙˙˙˙˙˙ŠUSER and GDI Heap InformationG šN' €@€<œ°œœ€‚˙USER and GDI Heap Informationş“' €'€8°œœ€‚˙The USER and GDI heap information section of the log shows what percentage of both the USER and GDI heap was available at the time of exception.8N@' €"€:˜°œœ€‚˙Related TopicsJŠ, (€<€8°œœă”ľ€‰‚˙Interpreting the log fileK@Ő1˙˙˙˙˙˙˙˙˙˙˙˙ŐSystem Information SectionDŠ' €:€<œ°œœ€‚˙System Information Section°†ŐÉ* "€ €8°œœ€‚‚‚‚˙The System Information section of the log file shows the mode and windows version under which your program was run.Also given is΂—L f€€x°Čœ^„Hl€ƒ‚ƒâI~‰‚ƒâb(" ‰‚ƒâÔŽ8‰‚ƒâ-ý ‰‚˙-CPU information-largest free memory block-total linear memory space-free linear memory space-swap file pages.8ÉĎ' €"€:˜°œœ€‚˙Related TopicsJ—, (€<€8°œœă”ľ€‰‚˙Interpreting the log file@ĎY1­˙˙˙˙˙˙˙˙˙˙˙˙YĆ Exception Types9’' €$€<œ°œœ€‚˙Exception TypesÇ YY' €A€8°œœ€‚˙Line two of the log file gives the number of the CPU exception that just occurred. Exception type numbers are described in detail in the INTEL documentation.Q*’Ş' €T€:˜°œœ€‚˙Frequently encountered exception types:AYë2 2€€x°Čœ^„Hl€ƒƒ‚ƒ‚ƒƒ‚˙ 0Happens during a DIV or an IDIV interaction when the divisor is 0.12Usually happens when there is too little room on the stack to proceed.13All protection errors which don't cause another exception cause an exception 13. This includes (but is not limited to):X#ŞC 5 8€G€x°ěœ^‚l€ƒƒ‚ƒƒ‚ƒƒ‚ƒƒ‚˙-exceeding segment limit (like "array out of bounds") in DS, ES, or other segments.-transferring execution to a non-executable segment (bad function pointer).-accessing DS, ES, FS, or GS registers containing a null selector.(Look for 0 in the segment register of the log file.)8ë{ ' €"€:˜°œœ€‚˙Related TopicsKC Ć , (€>€8°œœă”ľ€‰‚˙Interpreting the log file Q {  14˙˙˙˙˙˙˙˙˙˙˙˙  @The Latest UAE Logged Dialog BoxJ#Ć a ' €F€<œ°œœ€‚˙The Latest UAE Logged Dialog Box§{  , &€÷€8°œœ€‚‚‚‚‚‚˙WinSpector intercepts unrecoverable application errors (UAE's) and writes an error report log file. This log file can assist you in finding the cause of the UAE. If an exception has occurred, the date and time of the exception is displayed in the Latest UAE Logged Dialog Box.To view the log file, click View log.To change log file or report preferences, choose Set Pref.ÍĄa Ő , &€C€x°Čœ^„Hl€ƒ‚˙-Log preferences include where it is written, what editor is used to view the log, and whether or not to overwrite the existing log when an exception occurs.) ţ & €€8°œœ€‚˙%ůŐ #, &€ó€x°Čœ^„Hl€ƒ‚˙-Report preferences include adding system information to the log, writing to AUX, generate a binary file for post processing, adding stack frame data to the log, and adding an option to enter user comments to the log at the time of the excepton.8ţ [' €"€:˜°œœ€‚˙Related TopicsŸ^# @A R€ź€8°œœăŠUô%€‰‚㔾‰‚ă(֋‰‚ăZY`<‰‚˙Help ContentsInterpreting the log fileOptimizing the reportPreferences - Setting[ @Ć K[W@1ô ˙˙˙˙˙˙˙˙ ˙˙˙˙W@ëJThe Preferences Dialog BoxD @›@' €:€<œ°œœ€‚˙The Preferences Dialog Box?W@ÚB+ $€)€8°œœ€‚‚‚‚‚˙The WinSpector Preferences dialog box lets you set both log file preferences and report information preferences.Log preferences include where it's written, what editor is used to view it, and whether or not WinSpector overwrites or appends to the existing log when an exception occurs.Report preferences include adding system information to the log, writing to AUX, generating a binary file for post processing, adding stack frame data to the log, and adding the ability to enter user comments right when the excepton occurs.;›@C- *€€:˜°œœă]rxd€‰‚˙DirectorylFÚBC& €Œ€8°œœ€‚˙Enter the name of the directory where the log file will be written.8 CšC- *€€:˜°œœăr@+R€‰‚˙ViewergAC D& €‚€8°œœ€‚˙Enter the name of the editor to use when viewing the log file.DšCdD- *€.€:˜°œœăÂ÷í`€‰‚˙Append New Reports•o DůD& €Ţ€8°œœ€‚˙Set Log File to Append New Reports to append the most recent UAE report to the end of the existing log file.KdDDE- *€<€:˜°œœăÂ÷í`€‰‚˙Overwrite Previous Report–půDÚE& €ŕ€8°œœ€‚˙Set Log File to Overwrite Previous Report to overwrite the existing log file with the most recent UAE report.DDEF- *€.€:˜°œœă[çń€‰‚˙System InformationtNÚE’F& €œ€8°œœ€‚˙Set Report Information to System info to add system information to the log.=FĎF- *€ €:˜°œœăŔ:€‰‚˙AUX Summary[’FPG& €ś€8°œœ€‚˙Set Report Information to AUX summary to write an abbreviated form of the report to AUX.AĎF‘G- *€(€:˜°œœă¸S€‰‚˙PostMortem Dump•iPG&H, (€Ň€8°œœ€âI3‰‚˙Set Report Information to PostMortem Dump to generate a WINSPCTR.BIN file for postmortem processing.B‘GhH- *€*€:˜°œœăJÜď̀‰‚˙Stack Frame Data„^&HěH& €ź€8°œœ€‚˙Set Report Information to Stack Trace to add a verbose stack trace display to the log file.?hH+I- *€$€:˜°œœăˏŚd€‰‚˙User CommentsˇěHâI' €!€8°œœ€‚˙Set Report information to User Comments so you can enter user comments right when the exception occurred and have them added to the log file.8+IJ' €"€:˜°œœ€‚˙Related TopicsшâIëJI `€€8°œœăCTů9€‰‚ăŠUô%‰‚㔾‰‚ă(֋‰‚ăZY`<‰‚˙WINSPCTR.INI file - Setting PreferencesHelp ContentsInterpreting the log fileOptimizing the ReportPreferences - Setting= J(K1í˙˙˙˙˙˙˙˙!˙˙˙˙(KŘLWINSPECT.LOG6ëJ^K' €€<œ°œœ€‚˙WINSPCTR.LOGzS(KŘL' €§€8°œœ€‚˙WinSpector creates a report file (winspctr.log) when an unrecoverable application error (UAE) takes place. The log file can be helpful in finding out what caused the exception. The most recent log file can be viewed directly from the Most Recent UAE dialog box. To specify a viewer, click Set Prefs. and enter the viewer of your choice.9^KM1é˙˙˙˙˙˙˙˙"˙˙˙˙MÁOGlossary2 ŘLCM' €€<œ°œœ€‚˙Glossary YMNO˛ 2ł€8°œœâ™Ĺřđ€‰‚âšĎ.…‰‚âgoo‰‚â ȅʼn‚âI3‰‚âs8I3‰‚â¸Aoo‰‚âBőz‰‚âÔŽ8‰‚âI~‰‚âČLŚ‰‚âĘ9°Ů‰‚âȁŚˇ‰‚âĘ9°Ů‰‚âMVÂ6‰‚â-ý ‰‚âĐ$ډ‚â‹ńżM‰‚â0sB‰‚ââżY‰‚˙BUILDSYMcall stackDFA utilityDirectoryWINSPCTR.BINWINSPCTR.INIWINSPCTR.LOGEXEMAP utilityfree linear memory spacelargest free memory blocklogical addressesphysical addressesPostMortem Dumpselectorsstack informationswap file pages.sym filessystem informationTOOLHELP.DLLTMAPSYM utilitys8CMÁO; F€p€8°œœâb(" €‰‚âŰăE‰‚âňÜ ‰‚‚˙total linear memory spaceuser commentsViewer= NO €1. ˙˙˙˙˙˙˙˙#˙˙˙˙ €ýŠIntroductionÁO €ÁO6ÁOB€' €€<œ°œœ€‚˙Introduction4 €v€' €€:˜°œœ€‚˙WinSpectorž—B€4' €/€8°œœ€‚˙WinSpector and its utilities help you perform a postmortem examination of your Microsoft Windows programming Unrecoverable Application Errors (UAE).7v€k' € €:˜°œœ€‚˙How to use itž€4)ƒ> J€€x°Čœ^„Hl€ƒ‚ƒâ¸Aoo‰‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚˙1Run WinSpector.2When a UAE (exception) occurs, WinSpector writes a log file to your disk.3A Microsoft Windows "Unrecoverable Application Error" box is displayed.4Click the OK button.5A WinSpector dialog box with a brief exception report is displayed.6Click the OK button.7Read the log file. It contains information that can help you find the cause of the exception.>kgƒ' €.€:˜°œœ€‚˙What it can show youę°)ƒQ„: B€a€x°Čœ^„Hl€ƒâšĎ.…‰‚ƒ‚ƒ‚ƒ‚ƒ‚˙-the call stack-function and procedures names in the call stack (with a little help from you)-CPU registers-a disassembly of the instructions-Windows information.9gƒŠ„' €$€:˜°œœ€‚˙Getting startedŞ{Q„4†/ ,€÷€8°œœ€â0sB‰‚‚‚˙Before using WinSpector, be sure that TOOLHELP.DLL (Windows 3.1 or later) is in your search path. To be safe, don't have other exception debugging tools running concurrent with WinSpector (except TDW).The easiest way to use WinSpector is to put it in the "load=" section of your WIN.INI file. Upon starting, WinSpector will minimize. No additional interaction is required.L%Š„€†' €J€:˜°œœ€‚˙Getting the most out of WinSpector“k4†‡( €Ö€8°œœ€‚‚‚˙WinSpector can be configured to suit your needs.Four options allow you to gather specific information.ĄX€†´‡I b€°€x°Čœ^„Hl€ƒâ‹ńżM‰‚ƒâMVÂ6‰‚ƒâZ}ĆЉ‚ƒâȁŚˇ‰‚˙-Set System Information-Stack Frame Data-User Comments-PostMortem Dump˝‡ˆ. *€;€8°œœ€‚âĐ$ډ‚˙Three pre-processing utilities help you make .SYM files available prior to exception. WinSpector uses the .SYM files to greatly enhance the UAE report.>´‡ţˆA R€|€x°Čœ^„Hl€ƒâ™Ĺřđ‰‚ƒââżY‰‚ƒâBőz‰‚˙-BUILDSYM Utility-TMAPSYM Utility-EXEMAP Utilityâ´ˆŕ‰. *€i€8°œœ€‚âgoo‰‚˙The DFA Utility, WinSpector's post-processing utility, can help you utilize Turbo Debugger symbolic information to further enhancing readability of available UAE information.8ţˆŠ' €"€:˜°œœ€‚˙Related TopicsĺŽŕ‰ýŠW |€€8°œœă‰Lƒ€‰‚ă7”‰‚ă~CŔ‰‚ă(֋‰‚ăZY`<‰‚ăŔŤœl‰‚ăßçý‰‚˙BUILDSYM UtilityDFA UtilityEXEMAP UtilityOptimizing the ReportPreferences - Setting.Sym Files - CreatingTMAPSYM Utility1Š.‹1[˙˙˙˙˙˙˙˙$˙˙˙˙.‹XŒ<ýŠj‹' €*€<œ°œœ€‚˙System InformationîÇ.‹XŒ' €€8°œœ€‚˙The System Information option lets you add the Task List, the Module List, and information about the USER and GDI heaps to the log file. The default is to include system information in the report.1j‹‰Œ1č˙˙˙˙˙˙˙˙%˙˙˙˙‰Œ@Ž:XŒÌ' €&€<œ°œœ€‚˙Stack Frame Data}V‰Œ@Ž' €­€8°œœ€‚˙The Stack Frame Data option adds a verbose stack trace display to the end of the log file. Each entry displays the memory at a positive offset from the SS:BP for that stack frame. If there are > 256 bytes between 2 successive stack frames, the memory display is omitted for that frame. The default is to not generate a verbose stack trace.1ÌqŽ1C˙˙˙˙˙˙˙˙&˙˙˙˙qŽƒ7@Ž¨Ž' € €<œ°œœ€‚˙User CommentsŰ´qŽƒ' €i€8°œœ€‚˙The User Comments option lets you enter user comments at the time of exception about what was happening when the exception occurred. Those comments are then appended to the log.1¨Ž´1›˙˙˙˙˙˙˙˙'˙˙˙˙´ĘŔ9ƒ Ŕ' €$€<œ°œœ€‚˙PostMortem Dump´ Ŕƒž‘´ĘŔ- (€#€8°œœ€âI3‰‚˙The PostMortem Dump Option generates a WINSPCTR.BIN file. This raw data file can then be translated into a useful format by the DFA utility.1 ŔűŔ1ĺ˙˙˙˙˙˙˙˙(˙˙˙˙űŔŻÂ:ĘŔ5Á' €&€<œ°œœ€‚˙BUILDSYM UtilityzMűŔŻÂ- (€›€8°œœ€âĐ$ډ‚˙The BUILDSYM utility automates the process of building .SYM files for your programs. It calls the EXEMAP utility to create .MAP files, then calls the TMAPSYM utility to make .SYM files. BUILDSYM supports wildcards in the syntax and can be used to create .SYM files for a single file, a partial directory, or an entire directory.15ÁŕÂ1×˙˙˙˙˙˙˙˙)˙˙˙˙ŕ†Ä9ŻÂĂ' €$€<œ°œœ€‚˙TMAPSYM Utilitym@ŕ†Ä- (€€8°œœ€âĐ$ډ‚˙TMAPSYM creates .SYM files from existing .MAP files (created either by TLINK or by the EXEMAP utility). The resulting .SYM files make public functions, variable names, and functions in the entry table of the executable available to WinSpector. Constants and line number information is not included in the .SYM file.1áÄ1Ľ˙˙˙˙˙˙˙˙*˙˙˙˙ˇÄ+Ć8†ÄďÄ' €"€<œ°œœ€‚˙EXEMAP Utility<ˇÄ+Ć- (€€8°œœ€âĐ$ډ‚˙EXEMAP creates .MAP files for new EXE file format files. When .MAP files are available for programs, .SYM file can be created. WinSpector uses .SYM files to enhance the error report. EXEMAP is particularly useful when source code for a new EXE file is not available.1ďÄ\Ć1,˙˙˙˙˙˙˙˙+˙˙˙˙\ĆWÇ5+Ć‘Ć' €€<œ°œœ€‚˙DFA Utilityƙ\ĆWÇ- (€3€8°œœ€âI3‰‚˙The DFA utility translates WINSPCTR.BIN into a useful format. WinSpector writes a WINSPCTR.BIN file if report information is set to PostMortem Dump.F‘ƝÇ1 ˙˙˙˙˙˙˙˙,˙˙˙˙ÇŘ.Sym Files - Creating?WÇÜÇ' €0€<œ°œœ€‚˙.Sym Files - Creating<ÇÉ- (€€8°œœ€âĐ$ډ‚˙The availability of .SYM files greatly enhance the WinSpector error report log file. If .SYM files are present, they are used directly by WinSpector and no additional utility is required. The .SYM file must be in the same directory as the corresponding .EXE or .DLL.S,ÜÇkÉ' €X€:˜°œœ€‚˙Creating .SYM files for your own programsBÉ­É& €8€8°œœ€‚˙First create a .MAP file,Z&kÉĚ4 6€M€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚˙-If you're using a Borland IDE, select the Linker options that produce a .MAP file.-If you're letting BCC (Borland command-line C++ Compiler) invoke TLINK, use the "-M" option on the BCC command line.-If you're invoking TLINK yourself, use the "/m" command line option, and make sure that you're not using "/x" (no map file).-If you're using BPC (Borland Pascal Compiler) or TPC (Turbo Pascal Compiler), use the /GD command line switch.-If you're using another compiler, do whatever is necessary to create a .MAP file with Public symbols.-­É4Ě* $€€x°Čœ^„Hl€‚˙U/̉Ě& €^€8°œœ€‚˙Then, create a .SYM file from the .MAP file.Y4ĚâÍ< F€;€x°Čœ^„Hl€ƒââżY‰‚ƒ‚ƒââżY‰‚˙-If your .MAP file is from a Borland product, use TMAPSYM to create the .SYM file.-If you're using another compiler, use MAPSYM, provided with the Microsoft SDK to create the .SYM file.-If you're using a makefile, you can add TMAPSYM as another rule command after the link.jC‰ĚLÎ' €†€:˜°œœ€‚˙Creating .SYM files for programs when you don't have the source:ŁmâÍű6 :€Ű€8°œœ€‚â™Ĺřđ‰âBőz‰‚‚‚˙The easiest way to create a .SYM file for programs that you don't have the source code for (like USER.EXE and GDI.EXE) is to use the BUILDSYM utility. BUILDSYM uses both the EXEMAP and the TMAPSYM utilities, so make sure all three (BUILDSYM, EXEMAP, and TMAPSYM) are in your path.You'll probably want to build .SYM files in the WINDOWS directory, as well as the SYSTEM subdiLÎűWÇrectory below it. Although the .SYM files created by BUILDSYM are usually superior to the Microsoft SDK provided .SYM files, you may want to back up the SDK provided .SYM files before overwriting them with .SYM files created by BUILDSYM.9LÎ4' €$€:˜°œœ€‚˙Related Topics:¤\űŘH `€¸€8°œœă‰Lƒ€‰‚ă~CŔ‰‚㔾‰‚ă(֋‰‚ăßçý‰‚˙BUILDSYMEXEMAPInterpreting the log fileOptimizing the ReportTMAPSYM UtilityK4#1˙˙˙˙˙˙˙˙-˙˙˙˙#ôTurbo Debugger InformationDŘg' €:€<œ°œœ€‚˙Turbo Debugger Informationc<#Ę' €y€8°œœ€‚˙Turbo Debugger information contains line numbers and can help DFA find static functions that might not be included in a .SYM file. In addition to function and procedure names, DFA can give source file and line numbers for call stack entries. You'll be able to see the names and values of your program's variables.f?g0' €~€:˜°œœ€‚˙To create Turbo Debugger debug information for your programs$đĘT4 6€á€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚˙-If you're using a Borland IDE, make sure that the option to generate debug info is on.-If you're letting BCC invoke TLINK, specify the "-v" option in the BCC command line.-If you're invoking TLINK yourself, specify the /V option.-If you're using TPCW, use the /V switch.-If you're using a compiler that generates CodeView information, and have a copy of Turbo Debugger that has TDCONVRT included, you may be able to use TDCONVRT to convert the CodeView information to TD information.žq0ň- *€â€8°œœ€‚âgoo‰‚˙The DFA Utility makes it possible to post-process the log and take advantage of Turbo Debugger information.9T+' €$€:˜°œœ€‚˙Related Topics:ÉzňôO n€ô€8°œœă‰Lƒ€‰‚ă7”‰‚ă~CŔ‰‚㔾‰‚ă(֋‰‚ăßçý‰‚˙BUILDSYM UtilityDFA UtilityEXEMAP UtilityInterpreting the log fileOptimizing the ReportTMAPSYM Utility1+%1U˙˙˙˙˙˙˙˙.˙˙˙˙%I 4 ôY' €€<œ°œœ€‚˙.SYM FilesđÇ%I ) €€8°œœ€‚‚‚˙.SYM files contain symbolic information that WinSpector can use at the time of exception. They are created with TLINK or with the WinSpector utilities. Use the EXEMAP utility first to create a .MAP file if one does not exist. Use the TMAPSYM utility next to create a .SYM file from the .MAP file.The BUILDSYM utility automates the building of .SYM files for one or many programs right at the directory level, by using both EXEMAP and TMAPSYM for you.1Yz 1ç˙˙˙˙˙˙˙˙/˙˙˙˙z 0 CI ˝ ' €8€<œ°œœ€‚˙Largest Free Memory BlocksMz 0 & €š€8°œœ€‚˙The largest free block of contiguous linear memory in the system in bytes.1˝ a 1Ë˙˙˙˙˙˙˙˙0˙˙˙˙a ű A0 ˘ ' €4€<œ°œœ€‚˙Total Free Memory SpaceY3a ű & €f€8°œœ€‚˙The size of total linear address space in pages.1˘ , 1Ű˙˙˙˙˙˙˙˙1˙˙˙˙, Ö Bű n ' €6€<œ°œœ€‚˙Free Linear Memory SpacehB, Ö & €„€8°œœ€‚˙The amount of free memory in the linear address space in pages.1n  1ż˙˙˙˙˙˙˙˙2˙˙˙˙ • 9Ö @ ' €$€<œ°œœ€‚˙Swap File PagesU/ • & €^€8°œœ€‚˙The number of pages in the system swap file.1@ Ć 1Z˙˙˙˙˙˙˙˙3˙˙˙˙Ć ď;• ' €(€<œ°œœ€‚˙WINSPCTR.BIN fileîÇĆ ď' €€8°œœ€‚˙WINSPCTR.BIN is a raw data file which is generated by WinSpector at the time of exception and can be processed by the DFA utility. WINSPCTR.BIN is generated when the PostMortem Dump option is set.1 1Ô˙˙˙˙˙˙˙˙4˙˙˙˙ Ă8ďX' €"€<œ°œœ€‚˙The Call StackkE Ă& €Š€8°œœ€‚˙The calls your program was executing when the exception occurred. 1X @1˘˙˙˙˙˙˙˙˙5˙˙˙˙ @zCĂ @Ă;ĂG@' €(€<œ°œœ€‚˙Logical Addressesc: @ŞB) €u€8°œœ€‚‚‚˙When a New EXE file is linked, each segment is placed in a different section of the file and a segment table is created allowing for rapid segment access. You can find out the number of segments, their size and other information by running TDUMP (a Turbo Debugger utility) on the file. The same information as is available in a .MAP file is generated for the file.A segment's position in the Windows segment table is a logical address. Logical addresses are used in the Public section of a .MAP file. For any given .EXE or .DLL, the logical address will not change.L%G@öB' €J€8°œœ€‚‚˙A logical address is comprised of[,ŞBQC/ .€X€x°Čœ^„Hl€ƒ‚ƒ‚ƒ‚˙-module name-logical segment-offset.)öBzC& €€8°œœ€‚˙1QCŤC1=˙˙˙˙˙˙˙˙6˙˙˙˙ŤCˇEH!zCóC' €B€<œ°œœ€‚˙Physical Addresses (Selectors)Ä›ŤCˇE) €7€8°œœ€‚‚‚˙When a program is loaded, Windows allocates space for each logical segment and assigns it a unique selector.Both a selector and an offset combined make up a physical address for a logical segment. A typical physical address might be 09CD:65EA. Physical addresses are what the CPU uses. The selector Windows uses for a particular logical segment can change between different invocations of the .EXE or .DLL.X'óCF1u˙˙˙˙˙˙˙˙7˙˙˙˙F,IWINSPCTR.INI file - Setting PreferencesQ*ˇE`F' €T€<œ°œœ€‚˙WINSPCTR.INI File - Setting Preferences#űFƒG( €÷€8°œœ€‚‚˙WinSpector preferences can be set directly via the Preferences dialog box or you can fine tune the WinSpector reports right in the WINSPCTR.INI file. To find out more about setting each preference, click the underlined text for the desired option.í`FpH^ Š€€x°Čœ^„Hlă]rxd€‰‚ăr@+R‰‚ăÂ÷í`‰‚ă[çń‰‚ăŔ:‰‚ăJÜď͉‚ă¸S‰€‚˙DirectoryViewerAppend New Reports/Overwrite Previous ReportSystem InformationAUX SummaryStack Frame DataPostMortem Dump8ƒG¨H' €"€:˜°œœ€‚˙Related Topics„FpH,I> L€Œ€x°Čœ^„Hl㔵€‰‚ă(֋‰‚ăˏŚd‰‚˙Interpreting the log fileOptimizing the reportUser comments1¨H]I1r˙˙˙˙˙˙˙˙8˙˙˙˙]IžJ;,I˜I' €(€<œ°œœ€‚˙WINSPCTR.INI Fileß]IžJ' €ż€8°œœ€‚˙The WINSPCTR.INI file contains settings for user defined preferences, such as, in what directory the log is written, what viewer is used to see the log, and what specific information is gathered at the time of exception.1˜IĎJ1î˙˙˙˙˙˙˙˙9˙˙˙˙ĎJŒK3 žJK' €€<œ°œœ€‚˙DirectoryŠdĎJŒK& €Č€8°œœ€‚˙The Directory option in the Preferences dialog box lets you decide where the log file is written.1K˝K1ü˙˙˙˙˙˙˙˙:˙˙˙˙˝KˆL0 ŒKíK' €€<œ°œœ€‚˙Viewer›u˝KˆL& €ę€8°œœ€‚˙The Viewer option in the Preferences dialog box is where you specify what program to use for viewing the log file.1íKšL1˙˙˙˙˙˙˙˙;˙˙˙˙šL˘M7ˆLđL' € €<œ°œœ€‚˙User Comments˛‹šL˘M' €€8°œœ€‚˙The User Comments option in the Preferences dialog box lets you enter information about what was happening at the time of the exception.1đL˙˙˙˙1˙˙˙˙˙˙˙˙<˙˙˙˙˙˙˙˙˙˙˙˙ęá”HelvPň&"*PňTimes New Roman:4SymbolF@N:ţVDArial|ňbN^Yf’ňTimesar:ţzevnHelveticayŠ:ţ’{Courierž†š‘˘:ţ˙sj d0e€f_„g˙˙˙˙h)†iˆj-k-lBminŕo­…p {‰|,ƒ …ó-nƒiYŕ| Bž|CŤJJŕ)†nƒŕYCňňňň{‰^„ŤBźYBˆź­…uě…00ŕ†-uóŤC nƒě„ě…ˆމźžň0óě…ě…މމ_„€^„-­…óJŕ_„)†ˆ-Bi€^„ě„ě„Có_„^„Ÿ­… C iBžˆŤ‚ˆŤ,ƒŸŸJŕnBźJ|,ƒ{‰­…ˆŕ^„/&;)i24˙˙˙˙\h˙˙ZZ˙˙˙˙.MAP files.SYM filesaddressesappendassembly instructionAUXbasics binary file(BUILDSYM,closest function0comments4contents8CPU info<CPU information@creating .SYM filesDcurrent taskHdate of exceptionLDFAPDFA utilityTdirectory\disassembly section`dumpdessentialshexception typelexception type 0pexception type 12texception type13xexception types|EXEMAP€fine tuning WinSpector„first lineˆGDI heapŒgetting started”glossaryœheaps hex dump¤how to use WinSpector¨interpreting log fileŹintroduction°key concepts´last message¸latest logźlogŔlog fileČlogical addressesmain help screenmessage queue section messagesmodules list sectionmodules runningoptimizing the logoptions overwrite,parameter values0physical addresses4post processing8postmortum dump<pre-processing@preferences Dpreparing for WinSpectorhpreparing programslregister sectionpregister valuestsecond linexselectors|setting preferences€setupˆstack frameŒstack sectionstack switch”stack trace˜STDAUXœsystem information task list section¨tasksŹtasks running°time of exception´TMAPSYM¸TOOLHELP.DLLźtroubleshootingŔTurbo DebuggerÄTurbo Debugger informationČuser commentsĐUSER heapÔutilitiesÜverbose stackěviewerđWINSPCTR.BIN fileôWINSPCTR.INI fileřWinSpectorü/&;)Lz‰&‰W Đu ŽFö˙˙=ü=˙˙˙˙Help ContentsYEssentialsŸTOOLHELP.DLLJDFA UtilityŤ‚Tasks_„Setting Preferences)†DirectoryˆViewer-Append New Reports/Overwrite Previous ReportsBSystem InformationiAUX SummaryŕPostMortum Dump­…Stack Frame DataUser CommentsOptimizing the Report|BUILDSYM Utility,ƒTMAPSYM Utility{‰EXEMAP UtilityuInterpreting the Log FileóAddresses and SelectorsŤFirst Line of LogCSecond Line of Log Stack Trace SectionnƒDisassembly Sectioně„Register Sectioně…Message Queue SectionˆTasks SectionމModules Section - Stack TraceźUSER and GDI Heap InformationžSystem Information SectionňException Types0The Latest UAE Logged Dialog Box€The Preferences Dialog Boxŕ†WINSPECT.LOGBˆGlossaryމIntroduction­‰ň ś ‘€ńCƒc„ ….Sym Files - CreatingnTurbo Debugger InformationóÇ0}ÚöL ˘‚^„WINSPCTR.INI file - Setting Preferencesi†\‡̇Jˆĺˆ˙˙˙˙ˆˆˆˆˆˆˆˆˆ˙˙˙˙˙˙ˆˆˆˆˆˆˆˆˆˆ€˙˙˙˙˙˙˙ˆˆˆˆˆˆˆˆˆˆ˙˙˙˙˙˙˙ˆˆˆˆˆˆˆˆˆ€˙˙˙˙˙˙˙˙ˆˆˆˆˆˆˆˆˆ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ř˙˙lp C:\~hc4ffffřřřř˙˙˙˙˙˙˙÷ffff˙˙˙˙˙˙˙÷ffffřřřř˙˙˙˙˙˙˙÷ffff˙˙˙˙˙˙˙÷fffřřřřř˙˙˙˙˙˙˙÷f`˙˙˙˙˙˙˙÷`řřřřřřř˙˙˙˙˙˙˙÷˙˙˙˙˙˙˙÷wwwwwwwwww˙˙˙˙˙˙˙÷˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙U‹ěVlp ‹đ C:\~hc2˜^ë C:\~hc4ű&Ą˜^^‹ĺ]ĘU‹ě‹F=ptKw'< t9w=wŃŕ“.˙§|'–''š'š' 'Ś',$t,3tşë +Ňëşëş 됺 ë şëş ‹Â‹ĺ]ʐU‹ěƒěWV‹vŽ00&ǘ^‹F ĆuéRŽF &€<uéF+ŔP¸™RPšf2(‰Fč‰Vę Đué6‹Vę‹ř‰Vî˙v Všş´(ƒÄ‰Fú˙v VFđPFöPFôPNňQč ^ô&€C:\~hc2 ‹Ţ^C:\~hc4˘‹Ţ^ö&ŠˆFć<\u鐋ňÁ„’މÂ:™ˆŒ ł¨ŤqIŚąnȁŚˇś ~CŔ{‰ ȅĹ\‡ÉoyƞJÜďÍ­…Z}ĆĐň ľlŃ Ę9°Ů˘‚Đ$ÚóşQÖęBˆŕŽ'í0™Ĺřđ‘€[çńB˛Kýóóßçý,ƒ7”J¸Sŕ(֋\š=I~Ç”ľub(" 0-ý ÚňÜ Ě‡ČLŚ€0sBŸŠUô%I3s8I3i† `4CŚ˜6YMVÂ6‰ÔŽ8}CTů9^„Ŕ:i6˘Ą;Ť‚ZY`<_„(?€…’ćAnƒŰăEJˆ‹ńżM­r@+RˆâżYńÂ÷í`-ibdě…]rxd)†ËŚdŔŤœl …gooc„¸Aooŕ†ďSŤrźBőzCƒvć˙vä˙vŢW‰vžŒFŔš!g~ƒÄ ŽFŢ&˙5˙v ˙v Ä^ž&‹G HPS+ŔPPFÎP&˙_8=tT¸.uŽŔ&ƒ>ž u&Çž ˙vÚ˙vؚĘ4źŽFę&˙t.&˙t,ŒÇšĘ4†‚ŽÇ+Ŕ&‰D.&‰D,éÓţ˙vć˙vä˙vęVšäms ŔuŔ˙vÚ˙vؚĘ4قŽFŢ&‹E™ŒÁÄ^č‰Fş‰Vź‹Fҙ‰Fś‰V¸&‹G™+FşVź+FśV¸-ƒÚRP‰~˛‰N´~҃Ç‹÷‰NöQW~ţQWš!ô‚ƒÄ ‹F֙RP˙v ˙v ‹FöPV‹řš! ƒƒÄ ‹FԙRP˙v˙vvÖWVš!F‚ƒÄ Ä^˛&˙G‹Fţ&)G&€OÄ^č&ƒG"&ƒW$&€O+ŔŽř/&Łž ^_‹ĺ]Ę U‹ěƒě.WV‹F‹V‹đ‰VţRP˙v ˙v FäP+ŔPPPšroу‰Fú Ŕtéő‹~ŽFţ&‹D,&‹T.&‰D0&‰T2&‹L ‹Ř&‹DI‰^ŕ‰Vâ÷éËVâ‰Fî‰VđFčRPV+ÉQ‰F܉Vމv،Fښ´“ěƒ‹N܋VŢȉNę‰VěRQ˙vÚ˙vؚžkţƒ˙vW˙vÚ˙v؉F֚žk„;FÖt1˙v˙v˙v ˙v šˆK„‰Fú ŔuV˙v˙v˙v ˙v ˙vWčű‰Fúë=‹FPW‹NţQV‰~҉Fԋůšžkw‚™RP˙vÔ˙vŇ˙vě˙vęš!X‚ƒÄ Ä^î&€OŽÇ&€L‹FúŽř/&Łž ^_‹ĺ]Ę U‹ěƒě2WVÄ^‹óŒFŘ&‹_ Űu+ŔP¸™RPšf2…ŽÂ‹Ř&Çé$K‰^ގFŘ&‹D.& D,uVšĐdT… ŔtéŽFŘ&‹D,&‹T.&‰D0&‰T2+ŔP&‹D‹ČŃŕÁŃŕ+ŇŇRPšf2—…‹ř‰VĐ Đu黋FЉ~҉FԍU‹Ę‰FÜÇFě+Ŕ‰Fř‰FöŽFŘ&‹D‰~Ήv֋đ‹ůƒţ˙tUV˙vŢ˙vŘ˙v֚fnrƒ‰Fî‰Vđ Đt.˙Fě‹Fö‹VřŽFÜ&‰&‰U&‰uƒÇÄ^î&‹G™FöVř&‹w ë´˙vĐ˙vΚĘ4Åë3‹v΋NěÄ^Ň&‰˙vĐV+ŔP‹ÁŃáČŃá+ŔƒÁŔPQš&3_„‹đ‹Î‹Ú됎ú/&Çž +Ŕ™^_‹ĺ]ĘU‹ě‹N‹F Át ‹FPQšĘ4Ş„‹ĺ]ʐU‹ěƒě WV‹F Fué׋N ‹F ÁuéʋF PQč[ţ‹ř‰Vú Đué˙v˙v˙v˙v*ŔPšö´{†‹đ‰Vö Đt[ŽFú&‹‹ČŃŕÁŃŕ™ƒŇ‰Fü‰Vţ˙vöV+ŔPPPšüΆ˙vöV˙vúW˙vţ˙vüšfέ†;Füu ;Vţu¸ë+Ŕ Ŕu˙vöVš&ˇÎ„‹FúPWč,˙¸ë2‹FöPVšŚÁۆ Ŕt˙v˙v˙v˙vš~śI†ëА˙vúWčüţ+Ŕ븎ú/&Łž ^_‹ĺ]Ę U‹ěƒě WV‹vŽF&‹D‰Fţ+ÉQ&˙D &÷l RPšf2`‡‹ř‰Vü Đu¸ëVŽF&‹D H÷nţRP&˙t2&˙t0‹Nü‰~ö‰Nř~ţQWŒÇš!r‡ƒÄ ŽÇ&˙t.&˙t,šĘ4ů…ŽÇ‹Fö‹Vř&‰D,&‰T.&‰D0&‰T2+ŔŽü/&Łž ^_‹ĺ]ÂU‹ěƒěWVÄ^&‹G H‰Fţ‹v‹~ëWV˙v ˙všfnŕ‡ŽÂ‹Ř&‹F9vţĺWV˙v ˙všfnƆƒŇ^_‹ĺ]U‹ěƒěWV˙v ˙v@7lpŔŔPP Ś\€€€€€€€€€€€€ŔŔŔ˙˙˙˙˙˙˙˙˙˙˙˙S˙ƒ÷÷ w˙‚÷ w˙ƒ÷ w˙÷w‚~˙…÷fwƒď˙†÷ffw„~ţţ˙ƒ÷fƒwď˙ƒ÷fţ˙ƒ÷fď˙ƒ÷fţ˙ƒ÷fď˙ƒ÷fţ˙ƒ÷fˆ˙ƒ÷fř˙ƒ÷f˙ƒ÷fř˙ƒ÷f‚˙ˆ÷ff`˙đř˙ˆ÷ff`˙đ˙ƒ÷f‚öř˙ƒ÷f˙ƒ÷fř˙ƒ÷f˙ƒ÷fř˙ƒ÷f˙ƒ÷fř˙ƒ÷f˙ƒ÷fř˙ƒ÷f˙ƒ÷fř˙†÷f`˙…÷`ř˙„÷˙‚÷ w˙÷ ˙ôëlpŔŔPP \€€€€€€€€€€€€ŔŔŔ˙˙˙˙˙˙˙˙˙˙˙˙˙s˙đ ˙î‚ć ˙` ˙`ˆ‚0€˙ƒřfo˙`ˆŠ‡€˙˙řf8˙`ˆ‚‡f„ƒˆ˙„`ˆî†fg„ˆˆ˙`ˆ‚‡ˆ˙`ˆ‚‡ˆƒ†h˙„`ˆî†f‚gˆ„†hˆ˙`ˆŠ‡î†ffhˆˆ˙`ˆ‚‡ˆƒ†h˙„`ˆî†f‚gˆ„†hˆ˙`ˆŠ‡î†ffhˆˆ˙`ˆ‚‡ˆƒ†h˙„`ˆî†f‚gˆ„†hˆ˙`ˆŠ‡î†ffhˆˆ˙`ˆ‚‡ˆƒ†h˙„`ˆî†f‚gˆ„†hˆ˙`ˆŠ‡î†ffhˆˆ˙`ˆ‚‡ˆƒ†h˙`ˆ‚‡ˆ„†hˆ˙đ‰î†ffhˆˆ ˙ˆ‚€ ˙ˆ‚‡ ˙€ˆ‚‡ ˙‚řpx˙ÎĹlpŔŔPP Â\€€€€€€€€€€€€ŔŔŔ˙˙˙˙˙˙˙˙˙˙˙˙|˙ w˙ ˙ ˆ˙ ˆ˙ ˆ˙ ˆ˙ˆ膎ˆččˆ˙ˆîŽ…čŽčˆ˙ ˆ˙ ˆ˙ ˆ˙ ˆ˙ƒˆ€ ˆ˙…ˆˆ膎ˆččˆ˙†ˆˆîŽ…čŽčˆ˙„€ ˆ˙…ˆˆ€ˆ˙ˆˆ˙ˆˆ˙ƒˆ€ ˆ˙…ˆˆ膎ˆččˆ˙†ˆˆîŽ…čŽčˆ˙„€ ˆ˙…ˆˆ€ˆ˙ˆˆ˙ˆˆw˙ ˆ˙ ˆƒˆ€˙ ˆƒˆ˙ ˆ‚€˙ ˆ‚˙ ˙ ˙ ˙