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?\ Jan 10 '21 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? Feb 19 '21 at 15:12

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! Jan 10 '21 at 16:20
  • 1
    Great. Personally though, I’d try static disassembly first. Jan 10 '21 at 17:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.