Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Отладка / 25 сообщений из 26, страница 1 из 2
27.08.2004, 21:45
    #32669672
Us
Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка
Что-то много у меня сегодня вопросов...прошу прощения..)
Как правильно отлаживать всякие dll ActiveX и т.д.?
На точки останова оно не реагирует. Выхожу из положения так:
в нужном месте останова, чтобы посмотреть какие-то значения задаю инструкцию заранее ошибочную.
При выполненнии оно вылетает, VC перехватывает и предлагает отладку. Но помойму изврат и неправильно. Все падает сыпется, как и сама прога так и приложение которое его запустило. Что есть нехорошо..
...
Рейтинг: 0 / 0
30.08.2004, 16:37
    #32671723
Siebentearbeit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка
А какие есть вариатны?
...
Рейтинг: 0 / 0
30.08.2004, 18:31
    #32672099
Us
Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка
Дык это не всегда работает. Не работатет в таком варианте
приложение -> dll -> activeX. Если баг в activeX то он не определяет строку где ошибка, а выкидывает в асм..
Короче. как понимаю. выходов нет..
...
Рейтинг: 0 / 0
31.08.2004, 07:20
    #32672407
Sie
Sie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка
Стоп,

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

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

Где он вообще хранит эти точки останова? Может это быть связано с тем что все исходные файлы лежат в другом каталоге чем сама dll? Она у меня линкуется прямо в каталог базы 1с.
...
Рейтинг: 0 / 0
01.09.2004, 17:47
    #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
01.09.2004, 18:07
    #32676135
Us
Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка
Он лежит в каталоге Debug проекта. Где он должен быть?
Самой dll там нет.
Копии dll на харде есть, совсем в других каталогах.
...
Рейтинг: 0 / 0
01.09.2004, 18:44
    #32676213
DimaCh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка
Там, где его найдут -например, там же где и исполняемый файл. Лучше всего настрой студию, чтобы она туда его складывала. Properties/General/OutPut Directory
...
Рейтинг: 0 / 0
01.09.2004, 18:46
    #32676216
DimaCh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка
Исполняемый файл (exe)- это тест ;-) или 1С
...
Рейтинг: 0 / 0
01.09.2004, 21:37
    #32676359
Us
Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка
Нее.. все он видит! У него прописаны пути к pdb файлу. Типа $(OutDir)/$(ProjectName).pdb
Но видит он в DLL. А я не видела что он видит потому что мне нужна была срочно.. точка останова не в проекте dll.
У меня в решении два проекта. Во втором контрольные точки так и пробегает мимо..

Может все таки не надо .. писать тест ? ;-)
...
Рейтинг: 0 / 0
02.09.2004, 07:16
    #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
02.09.2004, 07:18
    #32676545
Mr.Buba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка
Ах да, это может не работаь только в том случае, когда программа сечет что ее запусти из под debug-процесса, ну тогда она может вякнуть что то типа "Караул ! Ломают !", Но с 1С токого не было змечено :)
...
Рейтинг: 0 / 0
02.09.2004, 12:55
    #32677305
DimaCh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка
Видеть pdb должен не проект VC, а запускаемый файл !!! Положи его в ту же директорию и наслаждайся. Сформулирем вопрос по другому: 1C и pdb лежат в одном месте??
Насчет тестов уговаривать не буду - зачем кого-то лишать удовольствия стучаться головой в стенку ;-).
...
Рейтинг: 0 / 0
02.09.2004, 15:16
    #32677759
Us
Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка
Видеть pdb должен не проект VC, а запускаемый файл !!! Положи его в ту же директорию и наслаждайся. Сформулирем вопрос по другому: 1C и pdb лежат в одном месте??
Насчет тестов уговаривать не буду - зачем кого-то лишать удовольствия стучаться головой в стенку ;-).


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

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

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

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

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

Удачи
...
Рейтинг: 0 / 0
02.09.2004, 16:46
    #32677994
Us
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
02.09.2004, 17:07
    #32678076
Us
Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка
drvMain.InvokeHelper(id,DISPATCH_METHOD,VT_EMPTY,NULL,bTypes,bscFName);
здесь проваливаюсь
не докопировалась строка

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


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