__debugbreak висит на фоновом потоке

Я пытаюсь отладить грубую проблему многопоточности (в коде C ++ в Windows), для воспроизведения которой требуются миллионы прогонов.
«Отладка printf» не дает мне достаточно информации, поэтому я хотел бы ворваться в отладчик при первом обнаружении проблемы.

Я использовал __debugbreak () для этого, но когда он вызывается в фоновом потоке, а отладчик еще не подключен, он зависает. Пока он завис, я могу подключить отладчик, и я увижу, что один из потоков блокирует этот вызов.

Это кажется приемлемым решением, но я хотел бы быть уверен, что это ожидаемое поведение. Я не могу найти какую-либо ссылку на это во время поиска в Google, что заставляет меня подозревать, что я что-то упускаю.

Кто-нибудь знает главу и стих об этом?

[Обновить] На самом деле, вижу ли я диалог или нет, кажется довольно случайным.
Хуже того, случайным образом — но независимо — __debugbreak () не блокирует поток, и процесс завершился, прежде чем я смог присоединить процесс (либо вручную, либо из диалогового окна отладки)).

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]