MSVC 2008, процесс отладки, не может отладить

Я уже некоторое время работаю над этим проектом, это устаревшая DLL, моя часть заключается в том, чтобы адаптировать его для работы с новой версией библиотеки.

Я добавил определение в сборку, определенное в определениях Свойства / C / C ++ / Препроцессор / Препроцессор

Определение, которое я добавил, называется CLSOPENLDV, и строка выглядит так:

    CLSOPENLDV;SP_DEBUG;WIN32;_WINDOWS;_USRDLL;

Это используется для работы, и в моем коде я использую определение для тестирования и включения и выключения кода:

    #pragma once

#if defined(CLSOPENLDV) && !defined(CLSOPENLDV_H)
#define CLSOPENLDV_H
#pragma comment(lib, "ldv32")
...
#endif

Все это работает, на прошлой неделе мне пришлось вернуться к первоначальной сборке, которая была простым случаем удаления константы из свойств, однако теперь я хочу вернуться туда, где я был, и по какой-то причине я не могу, даже если константа вернулась в свойствах, препроцессор не распознается сборкой, код в указанном выше тесте #if выделен серым цветом, и я действительно не уверен, почему?

Может ли это быть что-то делать с предварительно скомпилированными заголовками (pch)?

[Edit] На самом деле проблема не является исключительной для CLSOPENLDV, другое определение SP_DEBUG также не распространяется на сборку, и ни один из операторов отладки, включенных в это определение, не включен.

[Edit2] Я установил точки останова в отладчике, и он просто не доходит до них, все это работало, что-то принципиально сломано или отключено.

[Edit3] Это более фундаментальная проблема, чем я сначала думал, что не могу отладить проект вообще … Я присоединяюсь к процессу, но ни одна из моих точек останова не была достигнута. Я вижу много исключений первого изменения на панели «Вывод», но не знаю, где искать, поскольку он просто дает адреса.

[Edit4] Все еще пытаясь выяснить, что происходит, ниже дамп при запуске DLL, единственное изменение, которое я сделал, было отладка / Исключения / Исключения C ++, я установил флажок Брошенный, так что теперь он останавливается с диалоговым окном исключения по первому исключению:

‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Program Files \ Edwards \ Agent Service \ Edwards.Scada.AgentService.exe’, двоичный файл не был создан с отладочной информацией.
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ ntdll.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ mscoree.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ kernel32.dll’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ System32 \ KernelBase.dll ‘
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ apphelp.dll’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ apppatch \ AcLayers.dll ‘
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ msvcrt.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ user32.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ gdi32.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ shell32.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ cfgmgr32.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ windows.storage.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ combase.dll’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ System32 \ rpcrt4.dll ‘
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ System32 \ bcryptprimitives.dll ‘
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ advapi32.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ sechost.dll’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ System32 \ shlwapi.dll ‘
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ kernel.appcore.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ SHCore.dll’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ System32 \ powrprof.dll ‘
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ profapi.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ oleaut32.dll’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ System32 \ setupapi.dll ‘
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ mpr.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ sfc.dll’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ System32 \ winspool.drv
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ bcrypt.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ sfc_os.dll’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ mscoreei.dll ‘
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ version.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ clr.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ msvcr120_clr0400.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ mscorlib \ 6457de2c799b00351885b50b15ee8582 \ mscorlib.ni.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ ole32.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ System \ d07dc4c7e25d0f1f688e96c3651ccbe3 \ System.ni.dll’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ System.Serv759bfb78 # \ a8b2254177d41e0ba6c21c1620ad7d05 \ System.ServiceProcess.ni.dll ‘
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ clrjit.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ cryptsp.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ rsaenh.dll’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ System32 \ cryptbase.dll ‘
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ System.Core \ c3edb3947295bb8762d800c029930c15 \ System.Core.ni.dll’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ System.Configuration \ 2817463703ac432e3bbf54586b3d6b8b \ System.Configuration.ni.dll ‘
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ System.Xml \ 9d354ba04e2414d763e9dea657f52fff \ System.Xml.ni.dll ‘
Поток ‘Win32 Thread’ (0x2084) завершился с кодом 0 (0x0).
‘Edwards.Scada.AgentService.exe’: загружен ‘ImageAtBase0x4890000’, символы не загружены.
‘Edwards.Scada.AgentService.exe’: загружен ‘ImageAtBase0x48b0000’, символы не загружены.
‘Edwards.Scada.AgentService.exe’: выгружен ‘ImageAtBase0x4890000’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ System.Data \ e6902bef5b9f4110e975dc92ff87e71d \ System.Data.ni.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ Microsoft.NET \ assembly \ GAC_32 \ System.Data \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Data.dll’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ System32 \ ws2_32.dll ‘
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ crypt32.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ msasn1.dll’
Исключение первого шанса в 0x015e401a в Edwards.Scada.AgentService.exe: 0xC0000005: Местоположение чтения нарушения доступа 0x00000000.
‘Edwards.Scada.AgentService.exe’: загружен ‘ImageAtBase0x4950000’, символы не загружены.
‘Edwards.Scada.AgentService.exe’: загружен ‘ImageAtBase0x4960000’, символы не загружены.
‘Edwards.Scada.AgentService.exe’: выгружен ‘ImageAtBase0x4950000’
Поток ‘Win32 Thread’ (0x25d4) завершился с кодом 0 (0x0).
Поток ‘Win32 Thread’ (0x13d0) завершился с кодом 0 (0x0).
‘Edwards.Scada.AgentService.exe’: загружен ‘ImageAtBase0x50a0000’, символы не загружены.
‘Edwards.Scada.AgentService.exe’: загружен ‘ImageAtBase0x50f0000’, символы не загружены.
‘Edwards.Scada.AgentService.exe’: выгружен ‘ImageAtBase0x50a0000’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ System.ServiceModel \ dab9738fa2ffd706ad918f4854011580 \ System.ServiceModel.ni.dll ‘
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ System.Runt73a1fc9d # \ 0003c5ec8500bfe2571ef6b3768e3327 \ System.Runtime.Remoting.ni.dll ‘
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ System32 \ mswsock.dll ‘
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ System32 \ NapiNSP.dll ‘
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ System32 \ pnrpnsp.dll ‘
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ System32 \ nlaapi.dll ‘
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ winrnr.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ dnsapi.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ nsi.dll’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ System32 \ rasadhlp.dll ‘
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ IPHLPAPI.DLL’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ FWPUCLNT.DLL’
‘Edwards.Scada.AgentService.exe’: загружен ‘ImageAtBase0x4970000’, символы не загружены.
‘Edwards.Scada.AgentService.exe’: загружен ‘ImageAtBase0x50e0000’, символы не загружены.
‘Edwards.Scada.AgentService.exe’: выгружен ‘ImageAtBase0x4970000’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ SMDiagnostics \ 5415baffc9d9111d58c8fe05d4e50c8a \ SMDiagnostics.ni.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ System.Servd1dec626 # \ 71634b20929e9a6ed53d7acbffa0b93d \ System.ServiceModel.Internals.ni.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘ImageAtBase0x4970000’, символы не загружены.
‘Edwards.Scada.AgentService.exe’: загружен ‘ImageAtBase0x5220000’, символы не загружены.
‘Edwards.Scada.AgentService.exe’: выгружен ‘ImageAtBase0x4970000’
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ System.Runteb92aa12 # \ dd6060246740eddfed31aeed179fb81f \ System.Runtime.Serialization.ni.dll ‘
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ System.Web.Services \ 1150e9c52ad5088258dafbd0fce2ae07 \ System.Web.Services.ni.dll ‘
‘Edwards.Scada.AgentService.exe’: загружен ‘ImageAtBase0x5230000’, символы не загружены.
‘Edwards.Scada.AgentService.exe’: загружен ‘ImageAtBase0x5280000’, символы не загружены.
‘Edwards.Scada.AgentService.exe’: выгружен ‘ImageAtBase0x5230000’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ System.Serv14259fd9 # \ f8ae5cc80236c0593f67d76495fccd46 \ System.ServiceModel.Activities.ni.dll’
Исключение первого шанса в 0x74372ea2 в Edwards.Scada.AgentService.exe: 0xE0434352: 0xe0434352.
‘Edwards.Scada.AgentService.exe’: загруженный файл C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ System.IdentityModel \ 43572b8748b627fcbeb032b3656f5810 \ System.IdentityModel.ni.dll ‘
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ assembly \ NativeImages_v4.0.30319_32 \ System.Net.Http \ f37829993e81bb8c2121b954fda8e480 \ System.Net.Http.ni.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ httpapi.dll’
‘Edwards.Scada.AgentService.exe’: загружен ‘C: \ Windows \ System32 \ psapi.dll’
Исключение первого шанса в 0x74372ea2 в Edwards.Scada.AgentService.exe: исключение Microsoft C ++: EEFileLoadException в расположении памяти 0x053dc524 ..

Первая строка очень сбивает с толку, я несколько раз проверял сборку проекта, он собран для отладки.

[Другое редактирование] Я взял проект, который работал вчера из SVN и полностью удалил существующий проект, извлек копию из SVN. Я скомпилировал и протестировал, теперь он вылетает, где, как и вчера, он работал, я переустанавливал MSVC, устанавливал пакет обновления, брал работающий проект и собирал, но теперь он не отлаживается и не вылетает.

Зачем?
Что еще я могу попробовать?

Вот содержимое stdafx.h:

#include "stdafx.h"
#ifdef _ATL_STATIC_REGISTRY
#include <statreg.h>
#include <statreg.cpp>
#endif

#include <atlimpl.cpp>

Вот командная строка из C / C ++:

    /Od
/I "..\..\..\Legacy Common Files"/I "..\nodetalk2\include"/I "..\..\..\..\..\Include"/D "CLSOPENLDV"/D "SP_DEBUG"/D "WIN32"/D "_WINDOWS"/D "_USRDLL"/D "_VC80_UPGRADE=0x0600"/D "_WINDLL"/D "_MBCS"/FD /EHsc /MDd /Yc"stdafx.h"/Fp".\Debug/FsLonPlayer.pch"/Fo".\Debug/"/Fd".\Debug/"/W4 /nologo /c /Wp64 /Zi /TP /errorReport:prompt
[Править] Верхняя строка вывода — красная сельдь, она на самом деле ссылается на EXE, частью которого является эта DLL, DLL скомпилирована для отладки, однако, сказав, что она до сих пор не объясняет, почему вчера она работала и Я мог видеть исходный код в отладчике и останавливаться на точках останова, сегодня я не могу.

0

Решение

Нужно переместить это в ответ для форматирования. Я думаю, что @ZDF предлагает вам заменить строку:

#if defined(CLSOPENLDV) && !defined(CLSOPENLDV_H)

с

#if defined(CLSOPENLDV)

Пока я в этом, это следующее предложение не может быть долгосрочным решением, но оно должно предоставить точку данных, чтобы помочь понять, что пошло не так. Создайте новый заголовочный файл, в котором будет только эта строка:

#define CLSOPENLDV

Не использовать #include включить его где угодно, вместо этого открыть свойства проекта, попал в C/C++ -> Advanced и введите полный путь к новому файлу заголовка в Forced Include File поле. Попробуйте и посмотрите, что получится.

Также еще одна (возможно глупая) идея. Можете ли вы извлечь версию файлов проекта из репозитория SCM, как это было полторы недели назад, когда у вас это работало?

— Редактировать —

Только что увидел ваши правки на ваш оригинальный пост. Вы проверили свойства для фактического .cpp файл, вы можете сделать это очень легко, просмотрев свойства самого проекта, проверив, что два определения присутствуют, а затем просто нажав на .cpp файл в обозревателе решений. Это приведет вас к той же странице свойств для самого файла.

Мне очень любопытно узнать, что там видно.

0

Другие решения

Хорошо, я, кажется, должен представить это как ответ, а не как комментарий — у меня недостаточно репутации, чтобы комментировать. Кажется немного перевернутым, но все же …

Три, возможно, актуальные вопросы:

  1. Ваши изменения в определениях через Свойства. Я не уверен, что это заставит систему сборки перестраивать что-либо, зависящее от этого определения -D; вам может понадобиться восстановить все, что делает Чистым или Восстановить.

  2. У вас есть что-нибудь в stdafx.h, которое зависит от этого определения? Если это так, я бы попытался переместить его из stdafx.h.

  3. То, что вы видите в отладчике, определяется файлом .pdb. Попробуйте удалить это, оно может выйти из синхронизации.

Надеюсь, это поможет.

0

Этот проект очень большой, и в сборке есть несколько подпроектов, оказывается, что один из других проектов в сборке вызывал проблему с моим проектом. Проверив намного более старое дерево из SVN и построив его, мы теперь можем определить, где находится неисправный проект, и исправить его.

0
По вопросам рекламы [email protected]