__debugbreak висит на фоновом потоке
Я пытаюсь отладить грубую проблему многопоточности (в коде C++ в Windows), для воспроизведения которой требуются миллионы прогонов. "Отладка printf" не дает мне достаточно информации, поэтому я хотел бы ворваться в отладчик при первом обнаружении проблемы.
Я использовал __debugbreak() для этого, но когда он вызывается в фоновом потоке, а отладчик еще не подключен, он зависает. Пока он завис, я могу подключить отладчик, и я увижу, что один из потоков блокирует этот вызов.
Это кажется приемлемым решением, но я хотел бы быть уверен, что это ожидаемое поведение. Я не могу найти какую-либо ссылку на это во время поиска в Google, что заставляет меня подозревать, что я что-то упускаю.
Кто-нибудь знает главу и стих об этом?
[обновление] На самом деле, вижу ли я диалог или нет, кажется довольно случайным. Хуже того, так же, как и произвольно - но независимо - __debugbreak() не блокирует поток, и процесс завершился, прежде чем я смог присоединить процесс (либо вручную, либо из диалога отладки)).