Как отладить код, который использует повышение w/o проигрывающая исправность?

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

Существует ли благоприятный для разработчика способ просто пропуска части повышения, и наличие отладчика переходят прямо к моему коду?

Visual Studio имеет DebuggerStepThroughAttribute для платформы.NET. Действительно ли там что-нибудь подобно для собственного C++?

12
задан Filip Frącz 18 November 2008 в 07:07
поделиться

2 ответа

Можно пропустить пространство имен повышения полностью при помощи методов, описанных здесь. Просто используйте что-то как:

boost\:\:.*=NoStepInto

... в соответствующем ключе реестра.

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

10
ответ дан 2 December 2019 в 07:22
поделиться

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

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

Можно читать немного больше здесь.

11
ответ дан 2 December 2019 в 07:22
поделиться