В основном, я разрабатываю DLL (открытый интерфейс), который будет использоваться сторонним программным обеспечением. Я хочу отладить свою DLL после ее загрузки этой сторонней DLL, потому что я обнаружил конкретную ошибку, которая возникает только тогда, когда моя DLL загружается этим сторонним программным обеспечением (моя DLL работает нормально для всех других программ, которые принимают этот открытый интерфейс)
Я установил __debugbreak () в моей кодовой DLL и запустил стороннее программное обеспечение. В диалоговом окне Visual Studio появилось сообщение о том, хочу ли я выполнить отладку … но после того, как я нажму OK, вместо того, чтобы попасть в окно Visual Studio, которое показывает строку кода, в которой я установил точку останова, Visual Studio просто падает.
Я обнаружил, что сторонний софтвард загружает мою DLL и запускает ее в другом потоке. И я подозреваю, что это является причиной сбоя стороннего программного обеспечения, потому что __debugbreak () эффективно вызывает необработанное исключение в потоке, запущенном основным потоком.
В этом случае, как я могу отладить мою DLL?
К сожалению, VS падает, но вы можете найти способ обойти это.
Лучше всего начать сеанс отладки прямо сейчас. Или используйте «присоединить к процессу», когда процесс заблокирован в окне сообщений или другом входе. Также лучше использовать точки останова.
С помощью __debugbreak () или принудительного нарушения доступа попробуйте задать новый экземпляр VS, а не существующий.
Других решений пока нет …