Kulamani Sethi Ответов: 2

Не удается найти или открыть файл .pdb в visual studio 2013 c++ для umengx86.dll


Я отлаживаю свой проект под visual studio 2013 c++, а также настроил весь Microsoft symbol server. Получаю ошибку
.../\SysWOW64\sysfer.dll'. Cannot find or open the PDB file.

...\...\20160125.011\UMEngx86.dll'. Cannot find or open the PDB file.

Остальная часть моего файла .pdb для dll успешно загружена. Да, у меня есть SEP (semantic end point protection) антивирус, работающий в моей системе, который я не могу отключить или остановить. Я использую машину windows-7 x64.

Снимок экрана части вывода отладки моего проекта (только там, где у меня есть проблема в выводе).(см.строки № 2 и 3)
...........................................
<pre lang="c++"><pre lang="C#">32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Symbols loaded.

'Demo.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sysfer.dll'. Cannot find or open the PDB file.

'Demo.exe' (Win32): Loaded 'C:\ProgramData\Symantec\Symantec Endpoint Protection\12.1.4112.4156.105\Data\Definitions\BASHDefs\20160125.011\UMEngx86.dll'. Cannot find or open the PDB file.

'Demo.exe' (Win32): Loaded 'C:\DLCT_kula\DLCT_CODE\release\log4cplus.dll'. Module was built without symbols.

'Demo.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ws2_32.dll'. Symbols loaded.
..........................................................



Пожалуйста, кто-нибудь может предложить любую идею, как я могу исправить эту проблему. Заранее спасибо.

Что я уже пробовал:

Я попытался отладить свой код в visual studio 2013 c++, получив сообщение об ошибке .pdb не найден для UMEngx86.dll.

2 Ответов

Рейтинг:
2
Рейтинг:
0

Jochen Arndt

Это не ошибка, а информационное сообщение.

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


Kulamani Sethi

@Йохен, ты прав! я могу игнорировать сообщение от стороннего модуля. Когда я отлаживаю свой код, я выбрасываю исключение из диспетчера кучи. По этой причине мне нужно понять процесс отладки каждого модуля. Вот мой отчет о треке стека вызовов VC++ ;
Исключение бросок в строке 70;

ntdll.dll!_RtlpBreakPointHeap@4() Неизвестно
ntdll.dll!_RtlpCheckBusyBlockTail@8() Неизвестно
ntdll.dll!_RtlpValidateHeapEntry@12() Неизвестно
ntdll.dll!_RtlDebugFreeHeap@12() Неизвестно
ntdll.dll!@RtlpFreeHeap@16() Неизвестно
ntdll.dll!_RtlFreeHeap@12() Неизвестно
kernel32.dll!_HeapFree@12() Неизвестно
Demo.exe!free(void * pBlock=0x00698da0) Линия 51 C
> Demo.exe!шифрование(char * buffer=0x0065eaf8) строка 70 C++
Demo.exe!processRetrieveContentWS() строка 89 C++
Demo.exe!retrieveContentWS(void * dummy=0x00000000) строка 56 C++
Demo.exe!_callthreadstart() строка 255 C
Demo.exe!_threadstart(void * ptd) строка 237 C
kernel32.dll!@BaseThreadInitThunk@12() Неизвестно
ntdll.dll!__ _ RtlUserThreadStart@8() неизвестно
ntdll.dll!__RtlUserThreadStart@8() неизвестно


Если у вас есть какие-то идеи, пожалуйста, повторите.

Jochen Arndt

Не беспокойтесь о двоичном коде из других модулей. Попробуйте определить ошибку в вашей программе.

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

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