Skip to content
Snippets Groups Projects
Commit e76943eb authored by Friedemann Kleint's avatar Friedemann Kleint
Browse files

Load required dependency lib "dbghelp.dll" manually.

parent 7456e4e5
No related branches found
No related tags found
No related merge requests found
......@@ -65,6 +65,7 @@
#define DBGHELP_TRANSLATE_TCHAR
#include <inc/Dbghelp.h>
static const char *dbgHelpDllC = "dbghelp";
static const char *dbgEngineDllC = "dbgeng";
static const char *debugCreateFuncC = "DebugCreate";
......@@ -116,6 +117,12 @@ QString msgComFailed(const char *func, HRESULT hr)
static const char *msgNoStackTraceC = "Internal error: no stack trace present.";
static inline QString msgLibLoadFailed(const QString &lib, const QString &why)
{
return CdbDebugEngine::tr("Unable to load the debugger engine library '%1': %2").
arg(lib, why);
}
// ----- Engine helpers
static inline ULONG getInterruptTimeOutSecs(IDebugControl4 *ctl)
......@@ -143,19 +150,31 @@ DebuggerEngineLibrary::DebuggerEngineLibrary() :
{
}
bool DebuggerEngineLibrary::init(const QString &path, QString *errorMessage)
// Build a lib name as "Path\x.dll"
static inline QString libPath(const QString &libName, const QString &path = QString())
{
// Load from path
QString dllPath = path;
if (!dllPath.isEmpty())
dllPath += QDir::separator();
dllPath += QLatin1String(dbgEngineDllC);
QLibrary lib(dllPath, 0);
QString rc = path;
if (!rc.isEmpty())
rc += QDir::separator();
rc += libName;
rc += QLatin1String(".dll");
return rc;
}
bool DebuggerEngineLibrary::init(const QString &path, QString *errorMessage)
{
// Load the dependent help lib first
const QString helpLibPath = libPath(QLatin1String(dbgHelpDllC), path);
QLibrary helpLib(helpLibPath, 0);
if (!helpLib.isLoaded() && !helpLib.load()) {
*errorMessage = msgLibLoadFailed(helpLibPath, helpLib.errorString());
return false;
}
// Load dbgeng lib
const QString engineLibPath = libPath(QLatin1String(dbgEngineDllC), path);
QLibrary lib(engineLibPath, 0);
if (!lib.isLoaded() && !lib.load()) {
*errorMessage = CdbDebugEngine::tr("Unable to load the debugger engine library '%1': %2").
arg(QLatin1String(dbgEngineDllC), lib.errorString());
*errorMessage = msgLibLoadFailed(engineLibPath, lib.errorString());
return false;
}
// Locate symbols
......
......@@ -18,6 +18,9 @@
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QGroupBox" name="cdbOptionsGroupBox">
<property name="toolTip">
<string>These options take effect at the next start of Qt Creator.</string>
</property>
<property name="title">
<string>CDB</string>
</property>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment