powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Отладка
25 сообщений из 26, страница 1 из 2
Отладка
    #32669672
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то много у меня сегодня вопросов...прошу прощения..)
Как правильно отлаживать всякие dll ActiveX и т.д.?
На точки останова оно не реагирует. Выхожу из положения так:
в нужном месте останова, чтобы посмотреть какие-то значения задаю инструкцию заранее ошибочную.
При выполненнии оно вылетает, VC перехватывает и предлагает отладку. Но помойму изврат и неправильно. Все падает сыпется, как и сама прога так и приложение которое его запустило. Что есть нехорошо..
...
Рейтинг: 0 / 0
Отладка
    #32671723
Siebentearbeit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А какие есть вариатны?
...
Рейтинг: 0 / 0
Отладка
    #32672099
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык это не всегда работает. Не работатет в таком варианте
приложение -> dll -> activeX. Если баг в activeX то он не определяет строку где ошибка, а выкидывает в асм..
Короче. как понимаю. выходов нет..
...
Рейтинг: 0 / 0
Отладка
    #32672407
Sie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sie
Гость
Стоп,

На точки останова оно не реагирует.

А я всегда отлаживаю dll так: в самом проекте про dll ставлю брекпоинты, в свойствах проекта (или при первом запуске) указываю контрейнер - программу, которая будет звать эту длл-ину. И всё. Всё работает. В Активыхах тоже работает.
...
Рейтинг: 0 / 0
Отладка
    #32673118
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня dll из 1С запускается.. Как-то совсем не приходило в голову в свойствах проекта ее указывать..
Спасибо! Попробую.
...
Рейтинг: 0 / 0
Отладка
    #32675908
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не реагирует он на точки останова даже если в command прописать исполняемый файл приложения Запускать запускает, но не больше.
...
Рейтинг: 0 / 0
Отладка
    #32675941
DimaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странно, такой прием вроде всегда работал (Правда не с 1С ;-)). Надесь, это Debug dll?
...
Рейтинг: 0 / 0
Отладка
    #32675970
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, конечно
...
Рейтинг: 0 / 0
Отладка
    #32675984
DimaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если не слишком сложно использовать dll по-отдельности от 1С, то можно написать мааа-ленький тестик и потренироваться на нем.
...
Рейтинг: 0 / 0
Отладка
    #32676005
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я смогу эмулировать объекты 1С? Он мне передает указатели на IDispatch своих объектов. Это во первых. Во вторых dll пользуется интерфейсами самого 1C выполняя функции например создания окна внутри 1С. Кроме того эта dll потом вызывает активный документ, которому тоже передает полученный указатель на Idispatch.
Можно в этом случае написать ма-а-аленькую тестовую прогу?
...
Рейтинг: 0 / 0
Отладка
    #32676012
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели нет никаких команд перейти там например в отладочный режим?
...
Рейтинг: 0 / 0
Отладка
    #32676027
DimaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Даже в таком случае можно тестик написать (используя Mock-и), только похоже, что овчинка не стоит выделки. Просто с подобной проблемой (что Dll не дебажится) не разу не приходилось сталкиваться. Кстати, на какой студии проект?
...
Рейтинг: 0 / 0
Отладка
    #32676051
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, на какой студии проект
Net

Где он вообще хранит эти точки останова? Может это быть связано с тем что все исходные файлы лежат в другом каталоге чем сама dll? Она у меня линкуется прямо в каталог базы 1с.
...
Рейтинг: 0 / 0
Отладка
    #32676064
DimaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MSDN
You can't set a breakpoint in a source file when the debugger hasn't loaded the debug information for the module where the code is located.
Symptoms may include messages, such as the breakpoint cannot be set. The Warning breakpoint glyph appears at the breakpoint location. These Warning breakpoints become actual breakpoints when the code is loaded. For more information, see Breakpoints.

This may occur in cases such as:

Attempting to set a breakpoint in a DLL before LoadLibrary is called.
Setting a breakpoint in an ActiveX server before the container has started the server.
The debugger may miss breakpoints in a DLL if you have more than one copy of a DLL on your hard disk.
Multiples copies of a DLL can cause debugger confusion, especially if they are located in your Windows directory. The debugger may load one copy of the DLL while Windows loads a different copy. You cannot force the debugger to load a specific DLL, so you should keep only one version of a DLL at a time in your path, current directory, and Windows directory.


Посмотри где лежит "pdb" file для твоей dll.
...
Рейтинг: 0 / 0
Отладка
    #32676135
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он лежит в каталоге Debug проекта. Где он должен быть?
Самой dll там нет.
Копии dll на харде есть, совсем в других каталогах.
...
Рейтинг: 0 / 0
Отладка
    #32676213
DimaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там, где его найдут -например, там же где и исполняемый файл. Лучше всего настрой студию, чтобы она туда его складывала. Properties/General/OutPut Directory
...
Рейтинг: 0 / 0
Отладка
    #32676216
DimaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исполняемый файл (exe)- это тест ;-) или 1С
...
Рейтинг: 0 / 0
Отладка
    #32676359
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нее.. все он видит! У него прописаны пути к pdb файлу. Типа $(OutDir)/$(ProjectName).pdb
Но видит он в DLL. А я не видела что он видит потому что мне нужна была срочно.. точка останова не в проекте dll.
У меня в решении два проекта. Во втором контрольные точки так и пробегает мимо..

Может все таки не надо .. писать тест ? ;-)
...
Рейтинг: 0 / 0
Отладка
    #32676543
Mr.Buba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SieСтоп,

На точки останова оно не реагирует.

А я всегда отлаживаю dll так: в самом проекте про dll ставлю брекпоинты, в свойствах проекта (или при первом запуске) указываю контрейнер - программу, которая будет звать эту длл-ину. И всё. Всё работает. В Активыхах тоже работает.

Да - это то что нужно ! Работает всегда ! 1С сдесь не причем, просто человек что то не так делает, посмотри внимательно на свой проект и то что делаешь, скоре всего где -то что -то ты делаешь не так как описываешь ! В С++ 50% проблем из-за невнимательности !

Вот простой тест, который можно предложить:

1. Open DLL-project.
2. Go to Project Property Pages --> Debugging --> Command
3. Input regsvr32.exe
4. Go to Command Arguments
5. Input Your DLL ( Example: C:\My Project\MyBestProgram.dll )
6. Push OK button.
7. Установить точку прерывания на DllRegisterServer.
7. Go to Debug menu ---> Start

Все, и убедиться что ЭТО работает всегда, то же самой и с 1С.
...
Рейтинг: 0 / 0
Отладка
    #32676545
Mr.Buba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ах да, это может не работаь только в том случае, когда программа сечет что ее запусти из под debug-процесса, ну тогда она может вякнуть что то типа "Караул ! Ломают !", Но с 1С токого не было змечено :)
...
Рейтинг: 0 / 0
Отладка
    #32677305
DimaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видеть pdb должен не проект VC, а запускаемый файл !!! Положи его в ту же директорию и наслаждайся. Сформулирем вопрос по другому: 1C и pdb лежат в одном месте??
Насчет тестов уговаривать не буду - зачем кого-то лишать удовольствия стучаться головой в стенку ;-).
...
Рейтинг: 0 / 0
Отладка
    #32677759
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видеть pdb должен не проект VC, а запускаемый файл !!! Положи его в ту же директорию и наслаждайся. Сформулирем вопрос по другому: 1C и pdb лежат в одном месте??
Насчет тестов уговаривать не буду - зачем кого-то лишать удовольствия стучаться головой в стенку ;-).


Формулирую ответ по другому

Solution (2 projects)
1 проект
1C и pdb лежат в одном месте??
1. Да => DLL дебажится
2. Нет => DLL дебажится

2 проект
1C и pdb лежат в одном месте??
1. Да => EXE не дебажится
2. Нет => EXE не дебажится

Может там не стенка. Может там. дверь..)
...
Рейтинг: 0 / 0
Отладка
    #32677952
DimaCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда у меня остался один вариант: открываешь 2 файла проекта в тектовом режиме и смотришь в чем разница.

Если двери никто не нашел, это не значит что она есть...

Удачи
...
Рейтинг: 0 / 0
Отладка
    #32677994
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один вопрос
Иду пошагово в dll
Вызывается метод exe который не дебажится (выполняется он однозначно)
pDisp->GetIDsOfNames(IID_NULL,arNames,1,MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),SORT_DEFAULT),&id);
F11 Проваливаюсь. Вижу куски асма, memset.cpp, atlsimpstr.h и т.д..
Но CGdocDoc.cpp где этот метод определен я не вижу.
Должен же он туда проваливаться?? Или я чего-то непонимаю.

Проекты попробую посмотреть.
Спасибо.
...
Рейтинг: 0 / 0
Отладка
    #32678076
Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drvMain.InvokeHelper(id,DISPATCH_METHOD,VT_EMPTY,NULL,bTypes,bscFName);
здесь проваливаюсь
не докопировалась строка

В любом случае всем спасибо!!
На крайний случай буду писать тест только для второго проекта.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Отладка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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