Как отлаживать код, который использует повышение без потери здравомыслия? - PullRequest
12 голосов
/ 18 ноября 2008

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

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

В Visual Studio имеется DebuggerStepThroughAttribute для .NET Framework. Есть ли что-нибудь похожее для родного C ++?

Ответы [ 2 ]

11 голосов
/ 18 ноября 2008

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

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

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

10 голосов
/ 18 ноября 2008

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

boost\:\:.*=NoStepInto

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...