Symbol file could not be found, кривой qmake.exe

Есть проблема при отладке под Qt Creator 2.4.1, выглядит так:

*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\SysWOW64\combase.dll

Пытаемся установить с дистрибутивов майкрософт разные SDK, VS и т.д. и смотрим поможет или нет.

Устанавливаем отладочные символы для разных библиотек Макрософт типа ole32.dll и т.д. пакета Windows SDK 10 (последний на сегодня). Качаем с сайта microsoft.com

фотка 1

Перезагружаем ПК. Не помогает.

Добавляем к установке x86 app:

фотка 2

Перезагружаем ПК. Не помогает.

Устанавливаем MSVC 2010 Ultimate, конкретно Microsoft С :

фотка 3

Перезагружаем ПК. Не помогает.

Устанавливаем параллельную версию QtSDK1.2.1, создаем новый проект и там отладка работает !?...

Выясняется, что причиной всему разные используемые файлы qmake.exe, точнее из разных каталогов и соответсвенно собраны по разному (разные ключи компиляции и т.д.).

В старом не рабочем варианте qmake.exe, что-то заклинило. Там был форк на openssl 1.0.2 и форк QTableModel. То есть исходники изменялись, но вряд ли это как-то связано.

Делаем небольшой экспиремент: берем qmake.exe из другой дубликата QtSdk1.2.1 и переносим его в наш QtSdk1.2.1. пересобираем этим qmake.exe и все начинает работать нормально и отлаживаться как надо !?...

Обращаем внимание на зависимости qmake.exe (от библиотек Qt зависимостей нет), то есть это простая консольная утилита получается:

фотка 4

Теперь смотрим из Qt Creator на пути, которые показываются при наведении мышкой на строчку с qmake.exe. Это пути целового QtSdk, того куда перенесли qmake.exe.

фотка 5

И видим, что qmake.exe показывает старые пути из Desktop ветки. Получается, что пути прошиты в бинарнике qmake.exe и соответствуют каталогу, в котором собран qmake, а НЕ строятся относительно каталога, в котором он лежит.

Вспоминаем и еще раз проверяем, что сразу после установки QtSdk изначально qmake.exe нет в каталогах QtSources/4.8.1/bin/ и QtSources/4.8.1/qmake/.

Таким образом надо обязательно собирать qmake.exe из исходников: сборка qmake.exe через config.exe, чтобы нормально собирать сами исходники потом.

Почему же не идет отладка в итоге при сборке проекта через qmake каталога QtSoursces? Ответ найден простым методом: надо сравнить содержание Makefile.Debug после работы двух qmake.exe:

фотка 6

Лечится добавлением в pro файл:
QMAKE_LFLAGS_DEBUG = /DEBUG # без этого не входит в отладку
То есть это ключ для линковщика link.exe (MicroSoft).

Появляется один вопрос - а как у нас собраны исходники? Почему изначально qmake.exe, собранный из исходников не формирует этот ключ для сборки дефолтно.

Оказывается настройка QMAKE_LFLAGS_DEBUG происходит в файле qmake.conf каталога mkspecs (win32-msvc2010). получается, что делается это глобально для всех исходников:

QMAKE_LFLAGS_DEBUG = /DEBUG