Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перестают работать точки останова (breakpoints) / 12 сообщений из 12, страница 1 из 1
05.07.2013, 14:40
    #38321967
kir86975
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестают работать точки останова (breakpoints)
Всем привет. (работаю в Microsoft Visual Studio 2010)

У меня есть проект DLL-ка, которая является плагином для другой программы. Закидываю эту DLL-ку в папку с плагинами основной программы, запускаю эту программу, делаю Attach из студии и отлаживаю ее.

Проблема, собственно, вот в чем. Когда в свойствах проекта выставлено следующее:
Configuration Properties -> Project Defaults -> Common Language Runtime Support -> No Common Language Runtime Support,
C/C++ -> Code Generation -> Enable C++ Exceptions -> /EHsc,
C/C++ -> Code Generation -> Runtime Library -> /MTd
Точки останова работают отлично

если следующее:
Configuration Properties -> Project Defaults -> Common Language Runtime Support -> Common Language Runtime Support,
C/C++ -> Code Generation -> Enable C++ Exceptions -> /EHa,
C/C++ -> Code Generation -> Runtime Library -> /MDd,
то точки останова работать перестают.

Сколько с этим ни бился, сколько ни пытался гуглить, ничего, что бы помогло, найти не удалось. Помогите, пожалуйста, оживить точки. Спасибо заранее.
...
Рейтинг: 0 / 0
05.07.2013, 15:43
    #38322089
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестают работать точки останова (breakpoints)
kir86975,

C/C++ -> Code Generation -> Runtime Library -> /MTd
Точки останова работают отлично

Только эта опция влияет на отладку. Остальные из приведённых -- не влияют.
...
Рейтинг: 0 / 0
05.07.2013, 15:44
    #38322092
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестают работать точки останова (breakpoints)
kir86975,

Это
Configuration Properties -> Project Defaults -> Common Language Runtime Support -> Common Language Runtime Support,

тебе использовать НЕ НУЖНО.
...
Рейтинг: 0 / 0
05.07.2013, 15:48
    #38322101
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестают работать точки останова (breakpoints)
kir86975,


Помогите, пожалуйста, оживить точки. Спасибо заранее.

Ну и собственно -- главное -- надо включить генерацию отладочной информации при компиляции и построение .PDB при сборке.
При отладке .PDB должно быть той же версии и лежать рядом с .DLL

Также важно, чтобы И ПРИЛОЖЕНИЕ также было собрано в Debug-режиме и с отладочной информацией (но это уже не обязательно).
...
Рейтинг: 0 / 0
05.07.2013, 15:49
    #38322104
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестают работать точки останова (breakpoints)
kir86975,

Пока всё были не ответы на твои вопросы, так всё же объясни, что значит

"Точки останова работают отлично/точки останова работать перестают"
...
Рейтинг: 0 / 0
05.07.2013, 15:53
    #38322112
kir86975
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестают работать точки останова (breakpoints)
MasterZiv, Перестают, это значит что отображаются пустые окружности на полях с красной границей, а не красные круги. ) Ну и на них дебагер не останавливается.
...
Рейтинг: 0 / 0
05.07.2013, 15:57
    #38322125
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестают работать точки останова (breakpoints)
kir86975MasterZiv, Перестают, это значит что отображаются пустые окружности на полях с красной границей, а не красные круги. ) Ну и на них компилятор не останавливается.

Это значит, ты попросил дебагер поставить в данной строке кода останов, но после запуска программы дебагер не нашёл код, который соответствует этой строке кода и не смог поставить останов.

Т.е. по-видимому либо у тебя нет debug info вообще, либо она устаревшая.

В консольке IDE, когда приложение грузится, пишутся все загружаемые модули (.dll .exe) и для них ищется debug info, и пишется, если оно не найдено. Посмотри внимательно, должно находится debug info (обычно PDB) хотя бы для твоего отлаживаемого модуля.
...
Рейтинг: 0 / 0
05.07.2013, 15:59
    #38322130
kir86975
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестают работать точки останова (breakpoints)
MasterZiv,

Похоже, что ошибку я нашел. Под дебагом в окне модулей основное приложение просто не грузит мою DLL. А ошибка в том, что ему нужно обязательно MTd. Вот засада.
Просто хотел использовать MemoryStream, а для него нужно обязательно включить Common Language Runtime Support. И тут эта опция остальные за собой потянула.

Спасибо большое за ответ. Буду искать аналог
...
Рейтинг: 0 / 0
05.07.2013, 19:14
    #38322378
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестают работать точки останова (breakpoints)
kir86975,

Common Language Runtime Support НЕ НУЖЕН для программирования на С++.
Вообще.

Что это за MemoryStream ?
...
Рейтинг: 0 / 0
05.07.2013, 19:15
    #38322379
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестают работать точки останова (breakpoints)
Блин, это std::stingstream.
...
Рейтинг: 0 / 0
05.07.2013, 19:21
    #38322384
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестают работать точки останова (breakpoints)
kir86975Под дебагом в окне модулей основное приложение просто не грузит мою DLL. А ошибка в том, что ему нужно обязательно MTd. Вот засада.
Просто хотел использовать MemoryStream, а для него нужно обязательно включить Common Language Runtime Support.

Как одно связано с другим ?

/MTd Defines _DEBUG and _MT. Defining _MT causes multithread-specific versions of the run-time routines to be selected from the standard .h files. This option also causes the compiler to place the library name LIBCMTD.lib into the .obj file so that the linker will use LIBCMTD.lib to resolve external symbols. Either /MTd or /MDd (or their non-debug equivalents /MT or MD) is required to create multithreaded programs.
Это -- использование CRT в виде .DLL в multithreaded debug варианте.

/CLR используется или не используется отдельно и совсем независимо от ключа /Mt(d)

Я ещё раз хочу подчеркнуть, что и приложение, и твой плагин должны использовать одну и ту же сборку (Debug/Release) и один и тот же вариант библиотеки MSVCRT.
...
Рейтинг: 0 / 0
06.07.2013, 01:20
    #38322583
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перестают работать точки останова (breakpoints)
MasterZiv, мож, человеку, банально, Clean надо сделать, а потом пересобрать? хз, ведь, чего он там в коде своём понаделал?
довольно часто помогает
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перестают работать точки останова (breakpoints) / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]