оператор __debugbreak не вызывает точку останова - PullRequest
1 голос
/ 29 июля 2011

В моем визуальном коде C ++ я ввел оператор __debugbreak для запуска точки останова. Я скомпилировал проект с параметром / CLR. Но это не вызывает точку останова во время выполнения. Почему это происходит? Пожалуйста, помогите, прежде чем я застрелюсь. Это в 64-битном исполняемом файле.

Edit: я пытался с оператором DebugBreak () сейчас, и теперь он висит навсегда, не знаю, на каком утверждении. DLL используется серверной программой, к которой я обращаюсь с клиента на другом компьютере. Это то, что вызывает проблему? Должен ли я запускать его с самого сервера? Я ожидал, что он по крайней мере сообщит о сработавшей точке останова, даже если он не сможет успешно запустить сеанс отладчика на клиентском компьютере. Файл .pdb доступен на сервере в том же месте, что и dll.

Обновление: я только что попробовал запустить клиентскую программу на самом сервере, но все равно DebugBreak () вызывает бесконечное зависание. Сеанс отладчика не запускается.

Ответы [ 2 ]

1 голос
/ 24 октября 2012

Я использую этот код в C #, может быть, вы можете адаптировать его для C ++

#if DEBUG
var endTime = DateTime.Now.AddSeconds(30);
while (!System.Diagnostics.Debugger.IsAttached && DateTime.Now < endTime)
  System.Threading.Thread.Sleep(10);

if (System.Diagnostics.Debugger.IsAttached)
{
  System.Diagnostics.Debugger.Break();
}
#endif
0 голосов
/ 29 июля 2011

Почему вы не можете использовать F9 (точку останова) из отладчика? Однако DebugBreak(); должно работать.

Если DLL / EXE не могут быть загружены напрямую, вы можете «Присоединить к процессу» из меню «Отладка» (надеюсь, вы используете Visual Studio).

...