从析构函数抛出的行为随TUI和不随TUI而变化 我修改了下面的有效C++项目8:防止异常离开析构函数,因此没有两个异常传播,因此这里不期望崩溃/ UD: #include <iostream> class Bad { public: ~Bad() { std::cout << "Throw in ~Bad()." << std::endl; throw 1; } }; int main() { try { Bad bad; } catch(...) { std::cout << "Print This" << std::endl; } }

从析构函数抛出的行为随TUI和不随TUI而变化 我修改了下面的有效C++项目8:防止异常离开析构函数,因此没有两个异常传播,因此这里不期望崩溃/ UD: #include <iostream> class Bad { public: ~Bad() { std::cout << "Throw in ~Bad()." << std::endl; throw 1; } }; int main() { try { Bad bad; } catch(...) { std::cout << "Print This" << std::endl; } },c++,gdb,tui,C++,Gdb,Tui,运行gdb也会给出相同的行为。 但是,通过gdb TUI运行会使程序在抛出1时崩溃 可在以下位置复制: g++ --version g++ (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9) Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not ev

运行gdb也会给出相同的行为。 但是,通过gdb TUI运行会使程序在抛出1时崩溃

可在以下位置复制:

g++ --version
g++ (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
问题:装入二进制文件的机器指令是相同的,无论我是通过gdb还是通过gdb TUI运行,这是否意味着TUI解释指令的方式与gdb解释指令的方式不同

同样,在过去,当可执行文件通过gdb运行并直接作为./a.out运行时,我发现了不同的行为,我无法理解同一个可执行文件如何仅以我们运行它的方式给出不同的结果


注意:在g++4.8.5上运行时,这是不可复制的。

当您说“TUI”时,您是指标准命令行界面
gdb
程序吗?此外,引发异常时停止是几乎所有调试器的默认行为。也许你正在使用的IDE改变了GDB的默认设置?@Someprogrammerdude GDB在捕获异常时默认不这样做,必须为此键入“catch throw”。但是我有一种模糊的感觉,这里的问题是它发生在局部范围内的对象的构造函数中。C++使用的是哪种C++标准?在C++11中,默认情况下析构函数是nothrow(),我的编译器对此代码给出了警告。唉,我看到了gcc版本,还以为是gdb版本。我将删除我的评论。(尽管gcc版本也有点旧)当你说“TUI”时,你是指标准的命令行界面
gdb
程序吗?此外,抛出异常时停止是几乎所有调试器的默认行为。也许你正在使用的IDE改变了GDB的默认设置?@Someprogrammerdude GDB在捕获异常时默认不这样做,必须为此键入“catch throw”。但是我有一种模糊的感觉,这里的问题是它发生在局部范围内的对象的构造函数中。C++使用的是哪种C++标准?在C++11中,默认情况下析构函数是nothrow(),我的编译器对此代码给出了警告。唉,我看到了gcc版本,还以为是gdb版本。我将删除我的评论。(尽管gcc版本也有点旧)
g++ --version
g++ (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.