Как зарегистрировать исключение C ++ при запуске вне отладчика, в противном случае перебросить - PullRequest
0 голосов
/ 22 мая 2010

Я хочу сделать что-то вроде этого:

int main() {
    try { runApp(); }
    catch(std::exception const& ex) {
        if(runningInDebugger()) throw; // let the IDE show me what went wrong
        else displayMsgBox("Something went wrong! " + ex.what());
    }
}

Должен работать как минимум в VS2008, но чем больше отладчиков он поддерживает, тем лучше.

Я хочу проверить отладчик во время выполнения. Я не хочу делать "#ifdef NDEBUG", потому что я предпочитаю вообще не делать релизные сборки (не может быть обеспокоен).

Так что же мне использовать для проверки «runningInDebugger ()»?

Ответы [ 2 ]

2 голосов
/ 22 мая 2010

В Windows вы можете позвонить IsDebuggerPresent и узнать, есть ли отладчик.

1 голос
/ 10 августа 2010

Существует также System.Diagnostics.Debugger.IsAttached , если вы работаете с управляемым кодом. Я думаю, что определить, подключен ли отладчик в общем случае, довольно сложно. Обычно я стараюсь держаться подальше от любых изменений в поведении во время отладки, так как считаю, что это плохая практика и может затруднить отладку, но я понимаю ваши причины для этого.

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