У меня есть исполняемый файл (скомпилированный кем-то другим), который вызывает утверждение рядом с моим кодом. Я работаю над кодом в Visual C++ 2003, но у меня нет файла проекта для этого конкретного исполняемого файла (код используется для создания множества различных инструментов). Можно ли запустить двоичный файл в отладчике Visual C++ и просто указать, где находятся источники? Я сделал это раньше в GDB, поэтому я знаю, что это должно быть возможно.Присоединение к внешнему исполняемому файлу в Visual C++ 2003
ответ
За исключением любых других ответов, я хотел бы попробовать подключиться к исполняемому процессу в Visual Studio, установив точку останова в вашем коде, и когда вы входите в процесс, в котором у вас нет источника, он должен попросить источник файл.
Да, это возможно. Просто настройте пустой проект и укажите желаемый файл .exe
в качестве цели отладки. Я точно не помню, как, но я знаю, что это выполнимо, потому что я использовал winamp.exe
как цель отладки, когда я разработал плагины для Winamp.
Поскольку у вас нет исходного файла он будет показывать только ассемблерный код, но все еще может быть полезным, как вы можете также проверить память, регистры и т.д.
Update
Если вы отлаживаете утверждение в своей собственной программе, вы должны иметь возможность видеть источник просто отлично, поскольку путь к исходному файлу сохраняется в исполняемом файле при компиляции его с помощью отладочной информации.
Без символов PDB для этого приложения у вас будет трудное время, делая головы или хвосты того, что происходит и где. Я думаю, что любая информация о исходном коде будет только в том файле PDB, который был создан, когда кто-либо создавал это приложение.
Предполагается, что файл PDB был EVER создан для этого приложения - это не стандартная конфигурация для проектов VC++ для режима выпуска, которые, как я думаю. Поскольку вы утверждаете, я предполагаю, что это отладочная конфигурация?
Спасибо за ответ. Я предполагал, что информация об отладке была «встроена» в двоичный файл, как и в случае GCC. – 2008-09-07 04:42:56