为什么Visual Studio Code在我的主要开头就捕获异常?

问题描述 投票:0回答:1

我正在使用Visual Studio Code 1.33.0和基于gcc 7.3.1的rpi3的自定义构建arm-linux-gnueabi linaro c ++交叉编译器。我正在使用gdbserver调试远程连接的rpi3。我使用opencv并通过ssh管道X11窗口。

我在Mac OS 10.14.4上

Visual Studio Code暂停调试:Exception has occured

按f5键或再次继续后打开X11窗口,一切正常。所以它不会崩溃也不会退出。

以前有人经历过这种行为吗?

EDIT4

我认为这与以下问题有关:https://github.com/Microsoft/vscode-cpptools/issues/763#issuecomment-305001194

Aadita:

通过窗户管道不会造成例外。

Aaditi:

这在Windows 10上使用Visual Studio 2017社区,相同的设置,相同的项目,相同的编译器(linaro 7.3.1)和VisualGDB都没有例外。

编辑:这就是Callstack的样子。我没有在main之前执行任何代码。只有一些全局静态constexpr。

Callstack and variables

c++ visual-studio-code raspberry-pi gdb
1个回答
2
投票

更新:正如@rustyx在评论中指出的那样,我在这里描述的那种问题可能不会在OP中产生症状,因为程序确实会继续。很可能是工具链/设备间调试中的问题。

我建议单独尝试GDB,看看你是否得到相同的结果或更多的信息。


如果您在main()之前初始化了一些全局或静态变量,并且初始化导致异常,则会发生这种情况。参见Matt Godbolt在CppCon 2018年的演讲“The Bits Between the Bits: How We Get to main()”。

考虑一下:

int main() {}

// Initialized before main
static const auto x = []( auto i ) { if( i == 0 ) throw; return i; }( 0 );
© www.soinside.com 2019 - 2024. All rights reserved.