Почему код Visual Studio ловит исключение в самом начале моей основной? - PullRequest
0 голосов
/ 05 апреля 2019

Я использую Visual Studio Code 1.33.0 с пользовательской сборкой кросс-компилятор arm-linux-gnueabi linaro c ++ для rpi3 на основе gcc 7.3.1. Я отлаживаю удаленно подключенный rpi3 с помощью gdbserver. Я использую opencv и передаю окно X11 через ssh.

Я в Mac OS 10.14.4

Код Visual Studio приостанавливает отладку прямо здесь: Exception has occured

После нажатия клавиши f5 или продолжения снова открывается окно X11, и все работает нормально. Так что он не падает и не выходит.

Кто-нибудь испытывал такое поведение раньше?

EDIT4:

Я думаю, что это связано со следующей проблемой: https://github.com/Microsoft/vscode-cpptools/issues/763#issuecomment-305001194

EDIT3:

Исключение не вызвано прохождением через окно.

EDIT2:

Это работает без исключения в Windows 10 с Visual Studio 2017 Community, той же настройкой, тем же проектом, тем же компилятором (linaro 7.3.1) и VisualGDB

EDIT: Вот как выглядит Callstack. Я не выполняю код перед основной. Есть только глобальный статический constexpr.

Callstack and variables

1 Ответ

2 голосов
/ 05 апреля 2019

Обновление : Как отметил @rustyx в комментариях, проблема, которую я здесь описываю, вероятно, не приведет к появлению симптома в OP, поскольку программа продолжается.Скорее всего, это проблема в отладке цепочки инструментов / между устройствами.

Я бы предложил попробовать сам GDB и посмотреть, получите ли вы те же результаты или дополнительную информацию.


Это может произойти, если вы инициализировали некоторую глобальную или статическую переменную до main(), и эта инициализация вызывает исключение.См. Выступление Мэтта Годболта на CppCon 2018 " Биты между битами: как мы добираемся до main () ".

Рассмотрим это:

int main() {}

// Initialized before main
static const auto x = []( auto i ) { if( i == 0 ) throw; return i; }( 0 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...