I'm trying to work out how a Control Panel applet on Windows 3.1, which interacts with some host-specific hardware, works and as part of this I'd like to dump the contents of memory which the process uses.

For example, is there some Windows 3.x equivalent of ProcDump I could use, or a straightforward method of getting DOS DEBUG to dump this memory? How can I tell what address to dump for a Windows 3.1 "process"?

Since this interacts with hardware on a specific host, I'm limited to the 4MB of memory that host has to be able to run any dump or debug tools.

Windows is running in standard, not enhanced, mode, in case that makes any difference to tools applicability.

  • 3
    Does it have to be running? As far as I recall at this distance from the 20th century, a .cpl is just a DLL file. Can you write a simple program to load it, which you then run under the Win3.1 debugger?\
    – dave
    Commented Jan 10, 2021 at 4:01
  • @another-dave Win 3.1 built-in debugger (debug.exe if that works for Windows applications?) Or from something like Borland Pascal or C? Commented Feb 19, 2021 at 15:12

1 Answer 1


Among the Borland Pascal 7 example programs, there is an OWL application called HeapSpy, which can inspect the list of memory blocks allocated by any running Windows module.


The demo is pretty simplistic; the only thing it can do with memory dumps is display them in a built-in viewer. But since it comes with source code, it shouldn’t be too hard to expand its functionality.

  • Awesome - I'll give that a go! Commented Jan 10, 2021 at 16:20
  • 1
    Great. Personally though, I’d try static disassembly first. Commented Jan 10, 2021 at 17:37

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .