草庐IT

c++ - 在可执行文件上重复运行 GDB(并在崩溃/错误时停止)

我正在尝试找出一种方法来重复使用GDB运行可执行文件,最好在出现错误时停止。我在手册中找不到这样做的方法!谢谢 最佳答案 我试过(在Bash中):whiletrue;dogdb-exruna.out-exquit;done;不幸的是,这被证明是相当棘手的,但它确实自动运行,当程序崩溃时(我用一个导致SIGABRT的旧程序进行测试),gdb询问“程序正在运行。无论如何退出?(y或n)”,所以只需按n。 关于c++-在可执行文件上重复运行GDB(并在崩溃/错误时停止),我们在StackOve

c++ - gdb 为具有虚函数的类打印非字符串值的静态 const 数组的无效地址

编辑:请向下滚动到问题末尾的“编辑”部分,了解最新的详细信息。我不会编辑这篇文章的其余部分来保留评论的历史记录。我在头文件中定义了一个类:classTestClass{public:TestClass(){}~TestClass(){}voidTest();private:staticconstchar*constcarr[];staticconstintiarr[];};TestClass::Test()函数只是确保两个数组都被使用,因此它们不会被优化掉-将它们打印到日志中。为了清楚起见,我不会在这里发布。数组在.cpp文件中初始化。上面的例子工作正常,当创建这个类的一个实例时,地址

c++ - gdb 为具有虚函数的类打印非字符串值的静态 const 数组的无效地址

编辑:请向下滚动到问题末尾的“编辑”部分,了解最新的详细信息。我不会编辑这篇文章的其余部分来保留评论的历史记录。我在头文件中定义了一个类:classTestClass{public:TestClass(){}~TestClass(){}voidTest();private:staticconstchar*constcarr[];staticconstintiarr[];};TestClass::Test()函数只是确保两个数组都被使用,因此它们不会被优化掉-将它们打印到日志中。为了清楚起见,我不会在这里发布。数组在.cpp文件中初始化。上面的例子工作正常,当创建这个类的一个实例时,地址

c++ - 在 Linux 中调试期间是否可以停止单个线程?

我想知道的是,是否有可能在Linux的调试session中(阅读:gdb:))停止单个线程的执行,让其他线程继续运行。如果有人想知道为什么继续阅读:我写了一个软件看门狗C++类(使用Qt)。我用一个简单的多线程程序对其进行了测试,但是我想在将代码集成到真实应用程序中后对其进行测试。如果我可以从调试器中停止一个线程,那将简化这个测试阶段。:)干杯塞尔吉奥 最佳答案 在运行或附加到程序之前使用以下命令序列:启用异步接口(interface):设置目标异步1如果使用CLI,分页会不停地中断:关闭分页开启:设置不间断使用这些命令来操作不间断

c++ - 在 Linux 中调试期间是否可以停止单个线程?

我想知道的是,是否有可能在Linux的调试session中(阅读:gdb:))停止单个线程的执行,让其他线程继续运行。如果有人想知道为什么继续阅读:我写了一个软件看门狗C++类(使用Qt)。我用一个简单的多线程程序对其进行了测试,但是我想在将代码集成到真实应用程序中后对其进行测试。如果我可以从调试器中停止一个线程,那将简化这个测试阶段。:)干杯塞尔吉奥 最佳答案 在运行或附加到程序之前使用以下命令序列:启用异步接口(interface):设置目标异步1如果使用CLI,分页会不停地中断:关闭分页开启:设置不间断使用这些命令来操作不间断

c++ - Eclipse CDT 多线程调试不是最佳的 - 如何独占运行线程?

我知道答案,我把它放在这里让其他人看到它如果您使用eclipseCDT,您可能会理解eclipse不是调试器,它只是一个应用程序前端,特别是针对GDB。因此,在调试C++程序时,您实际上只是在以一种更舒适的方式使用GDB。如果您必须在eclipseCDT中调试多线程程序,您会意识到事情很快就会变得忙碌,因为当您遇到断点时,所有线程都会停止,并且当您尝试在特定线程中执行单行时,它也会运行其他线程。为了使其正常工作,线程必须能够任意且独占地运行——这样当程序员执行一行时,它只执行特定的线程。因此,默认情况下,gdb的设置默认关闭“调度程序锁定”。如果您调试多线程应用程序,您会明白这必须在G

c++ - Eclipse CDT 多线程调试不是最佳的 - 如何独占运行线程?

我知道答案,我把它放在这里让其他人看到它如果您使用eclipseCDT,您可能会理解eclipse不是调试器,它只是一个应用程序前端,特别是针对GDB。因此,在调试C++程序时,您实际上只是在以一种更舒适的方式使用GDB。如果您必须在eclipseCDT中调试多线程程序,您会意识到事情很快就会变得忙碌,因为当您遇到断点时,所有线程都会停止,并且当您尝试在特定线程中执行单行时,它也会运行其他线程。为了使其正常工作,线程必须能够任意且独占地运行——这样当程序员执行一行时,它只执行特定的线程。因此,默认情况下,gdb的设置默认关闭“调度程序锁定”。如果您调试多线程应用程序,您会明白这必须在G

c++ - 为什么 GDB 对浮点运算的评估与 C++ 不同?

我在尝试处理浮点算术问题时遇到了一些令人困惑的事情。首先,代码。我将问题的本质提炼到这个例子中:#include#includeusingnamespacestd;typedefunion{longlongll;doubled;}bindouble;intmain(intargc,char**argv){bindoubley,z,tau,xinum,xiden;y.d=1.0d;z.ll=0x3fc5f8e2f0686eee;//double0.17165791262311053tau.ll=0x3fab51c5e0bf9ef7;//double0.053358253178712838

c++ - 为什么 GDB 对浮点运算的评估与 C++ 不同?

我在尝试处理浮点算术问题时遇到了一些令人困惑的事情。首先,代码。我将问题的本质提炼到这个例子中:#include#includeusingnamespacestd;typedefunion{longlongll;doubled;}bindouble;intmain(intargc,char**argv){bindoubley,z,tau,xinum,xiden;y.d=1.0d;z.ll=0x3fc5f8e2f0686eee;//double0.17165791262311053tau.ll=0x3fab51c5e0bf9ef7;//double0.053358253178712838

c++ - 在具有 'gdb' 的函数内的特定行中设置断点

我正在尝试使用“gdb”在类(我创建的类)的成员函数内的第五行设置断点。来自here我了解如何在函数的开始处设置断点,但我想将其设置在函数内的特定行或特定从这个函数的开头偏移。一般来说,'gdb'中是否有一种方法可以通过设置与我已有的另一个断点的偏移量来为行设置断点?谢谢! 最佳答案 您可以使用gdbbreakpoint+在当前停止位置的偏移处创建断点.您还可以使用gdbbreak在特定行号上创建断点(对于当前源文件)或gdbbreak:(对于当前文件以外的文件)。更多详情见docs.