Заранее извиняюсь за идиотский вопрос, но ничего не могу найти в документации. Моя программа под MS Visual C++ 6 запускается на выполнение другой программой, написанной на Delphi. Мне требуется, чтобы моя программа выполнялась в отладчике. Перепробовал много вариантов, но ни один не сработал — программа запускается, но отладчик сообщает, что все точки останова недействительны и предлагает остановить программу на первой инструкции, что впоследствии и делает. То есть программа (по видимому та, что запускает мою программу) запускается под отладчиком, но мне-то нужен не ассемблерный листинг, а читаемый код на С++ и не запускающей программы, а моей собственной. При всех этих операциях я указывал в настройках проекта в качестве "Executable for debug session" имя запускающей прграммы. "Attach to process" в настройках проекта не получается по определению (запускающая программа при своем старте запускает мою). Я пробовал размещать все генерируемые двоичные файлы (.obj, .pdb и т.д.) в директории с exe-файлом, но тоже безуспешно. Использование DebugBreak() тоже ничего не дало. Если это вообще возможно, и кто-нибудь знает как это делается пожаллуйста подскажите. Заранее благодарен.
Здравствуйте, black_jesus, Вы писали:
_>Заранее извиняюсь за идиотский вопрос, но ничего не могу найти в документации. Моя программа под MS Visual C++ 6 запускается на выполнение другой программой, написанной на Delphi. Мне требуется, чтобы моя программа выполнялась в отладчике. Перепробовал много вариантов, но ни один не сработал — программа запускается, но отладчик сообщает, что все точки останова недействительны и предлагает остановить программу на первой инструкции, что впоследствии и делает. То есть программа (по видимому та, что запускает мою программу) запускается под отладчиком, но мне-то нужен не ассемблерный листинг, а читаемый код на С++ и не запускающей программы, а моей собственной. При всех этих операциях я указывал в настройках проекта в качестве "Executable for debug session" имя запускающей прграммы. "Attach to process" в настройках проекта не получается по определению (запускающая программа при своем старте запускает мою). Я пробовал размещать все генерируемые двоичные файлы (.obj, .pdb и т.д.) в директории с exe-файлом, но тоже безуспешно. Использование DebugBreak() тоже ничего не дало. Если это вообще возможно, и кто-нибудь знает как это делается пожаллуйста подскажите. Заранее благодарен.
Я бы попробовал либо встроить int 3, либо сгенерить exception (например обратиться по левому адресу).
При этом нужно вообще убедиться, что System Debugger — VC6, а не Delphi (как — не знаю).
А чтобы VC6 было легче искать исходники, собирать это приложение с Debug Info в стиле
Program Database for Edit and Continue (тогда в .exe идут полные пути к исходникам):
Project Settings --> C/C++ --> Category: General, Debug Info
Delphi приложение запускается без Debuger'а, а VC6 свалится и потребует, чтобы его отладили.
Ну и на совсем крайний случай — SoftIce или вообще, писать логи в файл или OutputDebugString(),
а там уже разбираться, что не так работает.
Кажется так (c) Винни Пух.
--
Alter,
http://alter.org.ua
Здравствуйте, black_jesus, Вы писали:
_>Заранее извиняюсь за идиотский вопрос, но ничего не могу найти в документации. Моя программа под MS Visual C++ 6 запускается на выполнение другой программой, написанной на Delphi. Мне требуется, чтобы моя программа выполнялась в отладчике. Перепробовал много вариантов, но ни один не сработал — программа запускается, но отладчик сообщает, что все точки останова недействительны и предлагает остановить программу на первой инструкции, что впоследствии и делает. То есть программа (по видимому та, что запускает мою программу) запускается под отладчиком, но мне-то нужен не ассемблерный листинг, а читаемый код на С++ и не запускающей программы, а моей собственной. При всех этих операциях я указывал в настройках проекта в качестве "Executable for debug session" имя запускающей прграммы. "Attach to process" в настройках проекта не получается по определению (запускающая программа при своем старте запускает мою). Я пробовал размещать все генерируемые двоичные файлы (.obj, .pdb и т.д.) в директории с exe-файлом, но тоже безуспешно. Использование DebugBreak() тоже ничего не дало. Если это вообще возможно, и кто-нибудь знает как это делается пожаллуйста подскажите. Заранее благодарен.
Один из способов: идем в реестр по адресу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options. Создаем там ключ (т.е. папку) с именем исполняемого файла, который ты хочешь отлаживать. Не путь, а просто имя. Типа myprog.exe. В этом ключе создаем строковое значение Debugger со значением (сорри за тавтологию) "C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\MSDEV.EXE" или где там у тебя студия. Потом запускаешь первую программу. В момент, когда она позовет твою программу, будет запущена студия. Сделай там Build->Start Debug->Go и вперед.
[ Posted via RSDN@Home 1.1.4 beta 3 (185) listening to the silence... ]