Чтобы прикрепить отладчик к определенной точке, у вас есть несколько вариантов:
Самое простое - просто вызвать DebugBreak
, что в значительной степени эквивалентно __asm int 3
, но также работает на других архитектурах (MSVC для x64 не позволяет встроенную сборку, если я правильно помню). Это откроет окно отладчика точно в срок, и вы сможете выбрать из зарегистрированных отладчиков (например, Visual Studio) для подключения к процессу.
Кроме того, вы можете ввести вызов на Sleep
, что даст вам возможность подключить отладчик. Вы должны использовать #ifdef _DEBUG
для этого, чтобы гарантировать, что вы на самом деле не отправляете с этим кодом.
Один вопрос: почему вы не можете запустить код из IDE? Это служба или DLL-библиотека, загруженная IIS, или аналогичная?
В этом случае вы можете получить ключ реестра ImageFileExecutionOptions
, который позволяет подключить отладчик в момент запуска процесса.
Если вы используете для этого cdb, вы можете настроить его как сервер или клиент для экземпляра WinDbg и выполнить отладку таким образом. Я делал это в прошлом, используя WinDbg в качестве отладчика ядра и используя ImageFileExecutionOptions для запуска ntsd -d
с указанным процессом. Это заставляет WinDbg переходить в режим пользователя. Иногда это полезная техника.