home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / pmdll23.zip / READ.ME < prev   
Text File  |  1995-04-29  |  9KB  |  190 lines

  1. Description of PMDLL.EXE
  2. ========================
  3.  
  4. PMDLL is an OS/2 presentation manager program that shows you the complete
  5. tree of DLLs loaded by an OS/2 executable file or by a DLL (both 16 and 32 
  6. bit formats are supported). Sometimes it's uncertain why a program won't start 
  7. (correctly) or behaves strange when running. When this program is using DLLs
  8. one of the causes can be that DLLs can't be found or that DLLs are loaded 
  9. from unexpected directories which contain an incorrect version of the DLL. 
  10. PMDLL gives you an easy way to detect these kind of problems.
  11.  
  12.   This utility is placed in Public Domain and can be concidered
  13.   freeware, this utility may not be sold, hired, leased or modified, 
  14.   it may be freely copied as a complete package.
  15.  
  16.  
  17. New in version 2.34
  18. ===================
  19.  
  20.   - Support for dynamically loaded DLLs
  21.  
  22.  
  23. About DLLs
  24. ==========
  25.  
  26. Most OS/2 programs require the existance of one or more DLLs which are 
  27. loaded by OS/2 the moment the program is started. The majority of these 
  28. DLLs can be found in your \OS2\DLL directory but often a program 
  29. is distributed with some DLLs of its own. Problems start when a DLL 
  30. required for a program is missing or seems to be missing or when more 
  31. than one version of a DLL is present on your system. To find DLLs when
  32. a program is started, OS/2 uses the searchpath provided in the 'LIBPATH='
  33. statement in your config.sys. After installation of OS/2 it looks like:
  34.  
  35.   LIBPATH=.;C:\OS2\DLL;C:\OS2\MDOS;C:\;
  36.  
  37. This example LIBPATH statement contains 4 entries:
  38.  
  39.   .             = Search current directory (some older versions of OS/2 did
  40.                   not add this entry after installation which can be very 
  41.                   handy, check your config.sys).
  42.   C:\OS2\DLL    = The OS/2 system DLL directory
  43.   C:\OS2\MDOS   = The OS/2 DOS system DLL directory
  44.   C:\           = The root of your OS/2 system disk
  45.  
  46. Consider the following example. Suppose you have installed a program called
  47. APROG.EXE together with a DLL APROG.DLL in the C:\APROG directory and you are
  48. using the standard settings of the LIBPATH command described above. When you
  49. try to start MYPROG.EXE from C:\ (with the 'C:\APROG\APROG' command) it won't 
  50. start because APROG.DLL can not be found by OS/2 in the 'LIBPATH=' search 
  51. path. If you start APROG.EXE from the C:\APROG directory itself it will start 
  52. because of the '.' entry in your LIBPATH. So the current directory can be 
  53. important for locating DLLs. That's why PMDLL gives you the possiblity to
  54. change it's current directory (see below). 
  55.  
  56. Another example. Suppose you have installed the program called APROG.EXE 
  57. in the C:\APROG directory and APRG.DLL in the C:\APROG\DLL directory. You 
  58. changed the settings of the LIBPATH command to:
  59.  
  60.   LIBPATH=.;C:\OS2\DLL;C:\OS2\MDOS;C:\;C:\APROG\DLL;
  61.  
  62. When there is only one single instance of APROG.DLL on your system the
  63. program APROG.EXE will certainly use the DLL in C:\APROG\DLL. However if
  64. the program behaves unexpectedly, the possiblity exists that there is another
  65. version of the DLL somewhere in the directories of your LIBPATH. When 
  66. examining APROG.EXE in PMDLL you can determine which DLLs are loaded by 
  67. APROG.EXE and where they are loaded from.
  68.  
  69. Besides the DLLs statically linked to an EXE or DLL, a program can also load 
  70. a DLL during run time. Because no program can ever predict which DLLs an 
  71. executable will load during run time, PMDLL needs to trace the program you want
  72. to investigate. Every time PMDLL senses that the program loads a DLL it will
  73. display its name.
  74.  
  75.  
  76. Using PMDLL
  77. ===========
  78.  
  79. Just enter 'start PMDLL' from an OS/2 command prompt or create a program object
  80. on your desktop. The program will start with a 'Open file' dialog where you can
  81. select the EXE or DLL file you want to test (you can also start the program 
  82. with the name of the executable you want to examine as a parameter). For now
  83. you can select the PMDLL.EXE program itself. The result is maybe a little bit
  84. boring because the PMDLL.EXE program only loads some standard OS/2 DLLs. To 
  85. give you a much nicer view select 'System DLL paths' from the options menu. 
  86. Press the delete button on the '?:\OS2\DLL' entry (where ? is the drive where
  87. you have installed OS/2) and press the 'Use' button. The tree will be much 
  88. more interesting now.
  89.  
  90.   What do these colors mean?
  91.  
  92.     Black:  Names of DLLs in black are OK (normal situation)
  93.     Gray:   These DLLs are found in one of the 'System DLL paths' you
  94.             provided in the 'Options' menu. These DLLs are considered to be
  95.             OK and are not decomposed any further nor test loaded (see 
  96.             'Options' menu).
  97.     Blue:   These DLLs are OK but are not decomposed because they appeared
  98.             already in the tree of DLLs and were decomposed there. In our 
  99.             example PMDLL.EXE is calling amongst others PMGPI.DLL. PMGPI.DLL 
  100.             is calling (besides DOSCALL1.DLL) PMMERGE.DLL which in turn calls
  101.             PMGPI.DLL again. PMGPI.DLL was already being decomposed so its
  102.             painted in blue now.
  103.     Red:    This DLL can't be found or can't be loaded.
  104.  
  105.  
  106.   Uppercase/lowercase
  107.  
  108.     Uppercase: DLL was statically loaded
  109.  
  110.     Lowercase: DLL was dynamicaly loaded (see 'Trace' option in 'File' menu).
  111.  
  112.  
  113. Click on an entry with your mouse and you can view some information about
  114. the DLL you have selected. The 'File path' shows you from where the DLL is 
  115. loaded.
  116.  
  117.  
  118. The menu items
  119. ==============
  120.  
  121. The 'File' menu.
  122.  
  123.   'About'    : Gives you version information of PMDLL and my address in case
  124.                you have any comments/suggestions to make.
  125.   'Select'   : Select an EXE/DLL file for decomposing.
  126.   'Refresh'  : After you have deleted/moved/copied some DLLs in another 
  127.                session you can select 'Refresh' to rebuild the tree.
  128.   'Trace'    : After the DLLs of an executable have been decomposed 
  129.                successfully, you can start tracing dynamically loaded DLLs. 
  130.                When selecting this menu choice you can start tracing by 
  131.                clicking the 'Start' button on the dialog that follows. 
  132.                To stop tracing, either click the 'Stop' button on this dialog 
  133.                (the program being traced is killed after a confirmation) or
  134.                simply exit the program being traced in the normal way. If 
  135.                one or more dynamically loaded DLLs have been found you can 
  136.                press the 'Merge' button to include them in your tree of DLLs.
  137.                Remember that statically loaded DLLs are shown in uppercase, 
  138.                dynamically loaded DLLs in lowercase. The dynamically loaded
  139.                DLLs found, can depend on the way you navigate through the
  140.                program being traced.
  141.   'Find DLL' : You can enter the name of a single DLL to look from where
  142.                it would be loaded. 
  143.   'Print'    : Send the information shown on your screen to a printer.
  144.   'Exit'     : Leave the program.
  145.  
  146. The 'Options' menu:
  147.  
  148.   'Current directory'  : You can change the current directory of PMDLL. This
  149.                          can have influence on the way DLLs are loaded.
  150.   'System DLL paths'   : To limit the size of the tree you can enter some paths
  151.                          here. DLLs found in these directories are not 
  152.                          decomposed any further and are depicted in gray. 
  153.                          'C:\OS2\DLL' (if C: is your OS/2 drive) is a good 
  154.                          candidate but maybe also directories like 
  155.                          'C:\TCPIP\DLL' or 'C:\SQLLIB\DLL'.
  156.   'Change OS/2 libpath': You can change the 'LIBPATH=' statement in 
  157.                          your CONFIG.SYS. PMDLL will use the modified LIBPATH
  158.                          immediately, OS/2 however only after rebooting. 
  159.   'Test load DLLs'     : When this option is checked, PMDLL will try to load 
  160.                          every found DLL (except DLLs found in the 
  161.                          'System DLL paths'). Loading a DLL will sometimes 
  162.                          give problems because some DLLs contain a special 
  163.                          piece of startup code which will be executed by OS/2
  164.                          the moment the DLL is loaded by the system. This piece
  165.                          of code can report a problem back to OS/2 and OS/2 
  166.                          will stop loading your program. With this option 
  167.                          checked the creation of the tree will take some more
  168.                          time, or PMDLL may even abort because this piece of
  169.                          code contains a serious error, so be aware.
  170.   'Tree view'          : Toggle between tree view and line view (just try it).
  171.   'Select font'        : Change the font used for drawing the tree.
  172.  
  173.  
  174.  
  175. Known problems/shortcomings
  176. ===========================                         
  177.  
  178.  - Windows EXE/DLLs are not supported.
  179.  
  180.  - Some DLLs which are testloaded refuse to unload again 
  181.    (the DosFreeModule () call failes) these DLLs stay loaded until
  182.    PMDLL is stopped.
  183.  
  184.  
  185. Author
  186. ======
  187.  
  188. Arthur van Beek
  189. CompuServe 100275,2347
  190.