PPUDump

From Free Pascal wiki

English (en) français (fr)

From FreePascal User's Manual:

ppudump is a program, which shows the contents of a Free Pascal unit. It is distributed with the compiler. You can just issue the following command

 ppudump [options] foo.ppu

to display the contents of the foo.ppu unit. You can specify multiple files on the command line.

The options can be used to change the verbosity of the display. By default, all available information is displayed. You can set the verbosity level using the -Vxxx option. Here, xxx is a combination of the following letters:

h: show header info.

i: show interface information.

m: show implementation information.

d: show only (interface) definitions.

s: show only (interface) symbols.

b: show browser info.

a: show everything (default if no -V option is present).


example output

ppudump unit1.ppu

PPU-Analyser Version 3.1.1
Copyright (c) 1998-2013 by the Free Pascal Development Team

Analyzing unit1.ppu (v195)

Header
-------
Compiler version        : 3.1.1
Target processor        : x86_64
Target operating system : Linux-x86-64
Unit flags              : init, static_linked, little_endian, has_debug_info, dwarf_debug_info, local_symtable
FileSize (w/o header)   : 97855
Checksum                : 52269C9E
Interface Checksum      : 8B95EA98
Indirect Checksum       : DA0A4D1C
Definitions stored      : 312
Symbols stored          : 960

Interface section
------------------
Module Name: Unit1

Source file 1 : unit1.pas 2017/10/19 12:04:48
Source file 2 : unit1.lrs 2017/10/19 11:26:00
Uses unit: System (Crc: 0071642B, IntfcCrc: 675CDF65, IndCrc: 3EF9017F)
Uses unit: objpas (Crc: 0C0DE648, IntfcCrc: 8F0C59F0, IndCrc: 09D16E16)
Uses unit: Classes (Crc: 2BD4311F, IntfcCrc: FEC1B15D, IndCrc: A2A74441)
Uses unit: sysutils (Crc: 673DB7A8, IntfcCrc: FB3278AD, IndCrc: 029F2F57)
Uses unit: FileUtil (Crc: DDDF8F2E, IntfcCrc: 91946678, IndCrc: 773AB234)
Uses unit: LResources (Crc: B1B5CBCA, IntfcCrc: BD6404C3, IndCrc: 07FAEA28)
Uses unit: Forms (Crc: 7BD93F9B, IntfcCrc: 4CED5DD1, IndCrc: 5876762D)                                    
Uses unit: Controls (Crc: B19F0092, IntfcCrc: 748FCEC1, IndCrc: 7E2DABAF)                                 
Uses unit: Graphics (Crc: 047DF96C, IntfcCrc: 7F769B7A, IndCrc: 25206CE8)                                 
Uses unit: Dialogs (Crc: F3CCBFDB, IntfcCrc: BA984012, IndCrc: 64641653)                                  
Uses unit: StdCtrls (Crc: C7C6F1A3, IntfcCrc: 320098AF, IndCrc: D6382504)                                 
Uses unit: uCmdBox (Crc: 63BFCCE9, IntfcCrc: FA038A54, IndCrc: 7A21D263)                                  
Uses unit: GifAnim (Crc: 75FA8DA5, IntfcCrc: EB25FB6B, IndCrc: 65C55C81)                                  
Link unit object file: unit1.o (static )                                                                  
DerefMapsize: 15
DerefMap[0] = SYSTEM
DerefMap[1] = FORMS
DerefMap[2] = CONTROLS
DerefMap[3] = CLASSES
DerefMap[4] = STDCTRLS
DerefMap[5] = LCLCLASSES
DerefMap[6] = WSLCLCLASSES
DerefMap[7] = TYPES
DerefMap[8] = LCLTYPE
DerefMap[9] = LMESSAGES
DerefMap[10] = GRAPHTYPE
DerefMap[11] = MENUS
DerefMap[12] = GRAPHICS
DerefMap[13] = OBJPAS
DerefMap[14] = LRESOURCES
Derefdata length: 18605

Interface symtable
----------------------
Symtable options: none

Interface definitions
----------------------
** Definition Id 0 **
Object/Class definition
      Type symbol : (0) SymId 2
       DefOptions : 
        DefStates : VMT Written, RTTITable Used, InitTable Used, RTTITable Written, InitTable Written, Dwarf DbgInfo Written
    Name of Class : TForm1
   Import lib/pkg : 
          Options : HasVirtual, HasPrivate, HasProtected, HasConstructor, HasDestructor, HasVMT, CanHavePublished
             Type : class
      Helper Type : none
    External name : 
         DataSize : 1904
      PaddingSize : 0
       FieldAlign : 0
      RecordAlign : 8
   RecordAlignMin : 0
       VmtField : (8) Unit 0, SymId 4244
   Ancestor Class : (17) Unit 1, DefId 1093
 Abstract methods : 0
  VMT entries: 307
    (129) Unit 1, DefId 864
      Visibility: public
    (138) Unit 5, DefId 10
      Visibility: public
    (147) Unit 0, DefId 749
      Visibility: public
    (156) Unit 3, DefId 1586
      Visibility: public
----

... lots of info