|
|
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Что-то много у меня сегодня вопросов...прошу прощения..) Как правильно отлаживать всякие dll ActiveX и т.д.? На точки останова оно не реагирует. Выхожу из положения так: в нужном месте останова, чтобы посмотреть какие-то значения задаю инструкцию заранее ошибочную. При выполненнии оно вылетает, VC перехватывает и предлагает отладку. Но помойму изврат и неправильно. Все падает сыпется, как и сама прога так и приложение которое его запустило. Что есть нехорошо.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 21:45 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Дык это не всегда работает. Не работатет в таком варианте приложение -> dll -> activeX. Если баг в activeX то он не определяет строку где ошибка, а выкидывает в асм.. Короче. как понимаю. выходов нет.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2004, 18:31 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Стоп, На точки останова оно не реагирует. А я всегда отлаживаю dll так: в самом проекте про dll ставлю брекпоинты, в свойствах проекта (или при первом запуске) указываю контрейнер - программу, которая будет звать эту длл-ину. И всё. Всё работает. В Активыхах тоже работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 07:20 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
У меня dll из 1С запускается.. Как-то совсем не приходило в голову в свойствах проекта ее указывать.. Спасибо! Попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 12:57 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Не реагирует он на точки останова даже если в command прописать исполняемый файл приложения Запускать запускает, но не больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 16:46 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Странно, такой прием вроде всегда работал (Правда не с 1С ;-)). Надесь, это Debug dll? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 16:58 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Если не слишком сложно использовать dll по-отдельности от 1С, то можно написать мааа-ленький тестик и потренироваться на нем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 17:16 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Как я смогу эмулировать объекты 1С? Он мне передает указатели на IDispatch своих объектов. Это во первых. Во вторых dll пользуется интерфейсами самого 1C выполняя функции например создания окна внутри 1С. Кроме того эта dll потом вызывает активный документ, которому тоже передает полученный указатель на Idispatch. Можно в этом случае написать ма-а-аленькую тестовую прогу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 17:25 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Неужели нет никаких команд перейти там например в отладочный режим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 17:28 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Даже в таком случае можно тестик написать (используя Mock-и), только похоже, что овчинка не стоит выделки. Просто с подобной проблемой (что Dll не дебажится) не разу не приходилось сталкиваться. Кстати, на какой студии проект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 17:33 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Кстати, на какой студии проект Net Где он вообще хранит эти точки останова? Может это быть связано с тем что все исходные файлы лежат в другом каталоге чем сама dll? Она у меня линкуется прямо в каталог базы 1с. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 17:41 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 17:47 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Он лежит в каталоге Debug проекта. Где он должен быть? Самой dll там нет. Копии dll на харде есть, совсем в других каталогах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 18:07 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Там, где его найдут -например, там же где и исполняемый файл. Лучше всего настрой студию, чтобы она туда его складывала. Properties/General/OutPut Directory ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 18:44 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Исполняемый файл (exe)- это тест ;-) или 1С ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 18:46 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Нее.. все он видит! У него прописаны пути к pdb файлу. Типа $(OutDir)/$(ProjectName).pdb Но видит он в DLL. А я не видела что он видит потому что мне нужна была срочно.. точка останова не в проекте dll. У меня в решении два проекта. Во втором контрольные точки так и пробегает мимо.. Может все таки не надо .. писать тест ? ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 21:37 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
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С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 07:16 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Ах да, это может не работаь только в том случае, когда программа сечет что ее запусти из под debug-процесса, ну тогда она может вякнуть что то типа "Караул ! Ломают !", Но с 1С токого не было змечено :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 07:18 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Видеть pdb должен не проект VC, а запускаемый файл !!! Положи его в ту же директорию и наслаждайся. Сформулирем вопрос по другому: 1C и pdb лежат в одном месте?? Насчет тестов уговаривать не буду - зачем кого-то лишать удовольствия стучаться головой в стенку ;-). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 12:55 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Видеть pdb должен не проект VC, а запускаемый файл !!! Положи его в ту же директорию и наслаждайся. Сформулирем вопрос по другому: 1C и pdb лежат в одном месте?? Насчет тестов уговаривать не буду - зачем кого-то лишать удовольствия стучаться головой в стенку ;-). Формулирую ответ по другому Solution (2 projects) 1 проект 1C и pdb лежат в одном месте?? 1. Да => DLL дебажится 2. Нет => DLL дебажится 2 проект 1C и pdb лежат в одном месте?? 1. Да => EXE не дебажится 2. Нет => EXE не дебажится Может там не стенка. Может там. дверь..) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 15:16 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Тогда у меня остался один вариант: открываешь 2 файла проекта в тектовом режиме и смотришь в чем разница. Если двери никто не нашел, это не значит что она есть... Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 16:32 |
|
||
|
Отладка
|
|||
|---|---|---|---|
|
#18+
Еще один вопрос Иду пошагово в dll Вызывается метод exe который не дебажится (выполняется он однозначно) pDisp->GetIDsOfNames(IID_NULL,arNames,1,MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),SORT_DEFAULT),&id); F11 Проваливаюсь. Вижу куски асма, memset.cpp, atlsimpstr.h и т.д.. Но CGdocDoc.cpp где этот метод определен я не вижу. Должен же он туда проваливаться?? Или я чего-то непонимаю. Проекты попробую посмотреть. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 16:46 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32675941&tid=2034475]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 224ms |
| total: | 409ms |

| 0 / 0 |
