Можно ли отключить перехватчики MSVC _penter и _pexit для каждой функции? - PullRequest
0 голосов
/ 13 октября 2010

В MSVC есть опции компилятора, позволяющие автоматически генерировать вызовы инструментария при входе и выходе из функций.Эти хуки называются _penter () и _pexit ().Опции компилятора:

/ Gh Включить _penter Hook Function

/ GH Включить _pexit Hook Function

Есть ли прагма или что-то вродеобъявления функции, которая отключит инструментарий для каждой функции?Я знаю, что использование __declspec (голых) функций не будет инструментировано, но это не всегда очень практичный вариант.Я использую MSVC как на ПК, так и на платформе не-X86, и не-X86-платформой - трудная задача вручную написать эпилог / пролог на ассемблере (не говоря уже о том, что он портит трассировку стека отладчика).

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

Резервный план, если это невозможно, - просто переместить функции в свои собственные единицы перевода CPP и скомпилировать отдельно без параметров.

1 Ответ

2 голосов
/ 13 октября 2010

Я не вижу способа сделать это.Учитывая, что вам все равно придется находить и обрабатывать каждую затронутую функцию, возможно, перемещение их в их собственный модуль (ы) не такое уж большое дело.

...