我正在使用 Visual Studio Code 1.33.0 和自定义构建 arm-linux-gnueabi linaro c++ 交叉编译器,用于基于 gcc 7.3.1 的 rpi3。我正在使用 gdbserver 调试远程连接的 rpi3。我使用 opencv 并通过 ssh 传输 X11 窗口。
我在 Mac OS 10.14.4
按 f5 或再次继续后,它会打开 X11 窗口,一切正常。所以它不会崩溃也不会退出。
以前有人经历过这种行为吗?
编辑4:
我认为这与以下问题有关: https://github.com/Microsoft/vscode-cpptools/issues/763#issuecomment-305001194
编辑3:
异常不是由管道穿过窗口引起的。
编辑2:
这在 Windows 10 和 Visual Studio 2017 社区、相同设置、相同项目、相同编译器 (linaro 7.3.1) 和 VisualGDB 上无一异常(exception)地工作
编辑: 这就是 Callstack 的样子。我没有在 main 之前执行任何代码。只有一些全局静态 constexpr。
最佳答案
更新:正如@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 );
关于c++ - 为什么 Visual Studio Code 在我的 main 的开头捕获异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55535855/