Подтвердить что ты не робот

Как отлаживать код, который использует повышение без потери здравомыслия?

Boost - отличный набор библиотек, и это действительно повышает производительность. Но код отладки, который использует его, - это полный кошмар. Разумеется, переход на двадцать тысяч файлов заголовков может быть полезным интеллектуальным упражнением, но что, если вам нужно делать это снова и снова?

Есть ли способ, отличный от разработчика, просто пропустить часть ускорения и отладчик перейти прямо к моему коду?

Visual Studio имеет DebuggerStepThroughAttribute для платформы .NET. Есть ли что-то подобное для родного С++?

4b9b3361

Ответ 1

Вы можете полностью пропустить пространство имен boost, используя методы, описанные здесь здесь. Просто используйте что-то вроде:

boost\:\:.*=NoStepInto

... в соответствующей записи реестра.

Однако, если ваш код вызывается изнутри boost (например, через boost::function или аналогичный), ваш код также будет пропущен! Мне будет интересно, если кто-то может найти хорошее решение для этой проблемы...

Ответ 2

Нет никакого независимого от платформы/компилятора способа, но мне сказали, что вы можете сказать отладчику, чтобы он не "входил" в определенные функции или классы. Вы должны найти ключ реестра: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\NativeDE\StepOver] и создать строковое значение, названное как число, в порядке, в котором должны применяться правила (я тоже немного смущен, но я думаю, что правила просто упорядочиваются в ( возможно, наоборот), и они должны быть применены) и установите для него что-то вроде: "boost::. * = NoStepInto". Например:.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\NativeDE\StepOver]
"10"="boost\:\:.*=NoStepInto"

Вы можете прочитать немного больше здесь.