1

My application relies on DBGHELP.DLL functions, especially the information about the loaded DLLs by the target processes. However, many times it fails on Windows versions lower to Vista (you know XP is still there!). Looked around and found that installed/present DBGHELP.DLL on the target system is old, and doesn't support many new features (For example, few flags of MiniDumpWriteDump are not supported in older versions).

This page mentions about the DbgHelp versions and vaguely mentions about distributing the DBGHELP.DLL (and other DLLs). DLLs shipped with OS must not be shipped (agreed, and no issues about it). Then it says latest DLL out of "Debugging Tools For Windows" should be shipped.

My question is: Which version can be/should be shipped with the application? Pick the latest one and assume it will work in lowest OS (XP)? Of course, I won't ship Debug version of this DLL. The "DbgHelp versions" page doesn't mention about supportability for specific OSes - so we may assume that even latest version will be supported on XP.

I would put the DLL in the application directory itself, and may conditionally call functions like SetDllDirectory. If needed, the DLL itself and/or any functions of DBGHELP.DLL may be loaded dynamically.

Related:

Ajay
  • 18,086
  • 12
  • 59
  • 105
  • Seems like you need to limit the OS support depending on your DLL version. Alternatively, you may put all the DLLs and delegate your installer to copy/replace the compatible DLL for the current OS whenever required. – Azeem Jun 15 '17 at 08:01
  • 1
    Users should never attempt to install the Debugging Tools For Windows versions of DbgHelp.dll **into the Windows system directories** - but you absolute free install `dbghelp.dll` to your private folder. look for windbg for example - in use own versions of `dbghelp.dll`, `dbgeng.dll`, etc in `"..\Windows Kits\*\Debuggers\x*\"` – RbMm Jun 15 '17 at 08:57
  • @RbMm, Does it mean that we can ship the latest version of dbghelp.dll (into application private folder) ? – Ajay Jun 15 '17 at 09:05
  • why not ? windbg do this for example. you can not install it to `windows` folder and other system folders. but to your own private folder you can install your own private version – RbMm Jun 15 '17 at 09:07
  • The WinDbg version is never the same as the OS DLL because the OS version does not support HTTP symbol server lookups. – Anders Jun 15 '17 at 10:44

1 Answers1

-1

One of the missing file error occurs as the file is deleted or corrupted. There is a different approach to its fix on the different windows versions. If you certainly need to fix dbghelp.dll missing error you need to install Microsoft Direct X follow the step-by-step method from installation of it.