c++ - 为什么 Visual Studio Code 在我的 main 的开头捕获异常?

标签 c++ visual-studio-code raspberry-pi gdb

我正在使用 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

Visual Studio Code 在此处暂停调试:Exception has occured

按 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。

Callstack and variables

最佳答案

更新:正如@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/

相关文章:

keyboard-shortcuts - VS Code 中是否有 'Open Folder...' 键盘快捷键?

webserver - 让树莓派与 IFTTT Maker channel 兼容

python - 带 Raspberry Pi 的 PIR 传感器

bash - sed问题:-bash:意外 token `('附近的语法错误

c++ - C & C++ : What is the difference between pointer-to and address-of array?

c++ - 如果在调试器中运行,数据在 Visual Studio 中未正确对齐

c++ - 在 BISON 语义规则中实现多种返回类型

powershell - 如何在 VS Code 中使用 "PowerShell Integrated Console"?

typescript - Visual Studio Code 使用 "react-jsx"作为 jsx 值与 create-react-app 的问题

c++ - OpenMP 结果不如预期