草庐IT

c++ - Eclipse CDT 调试 : Show dynamic type

我正在使用CDT进行C++开发,它使用gdb进行调试。调试变量View仅显示变量的声明类型-而不是基于vtable信息的实际类型。由于我严重依赖动态子类化,声明的类型通常不包含我需要的信息。我还必须检查实际子类的值。我发现了这个问题:vtableinpolymorphicclassofC++usinggdb据说gdb能够使用以下命令打印基于vtable信息的实际类型:setprintobjecton但是如何在EclipseCDT中执行此操作?顺便说一句:这不是一个很常见的用例,所以默认情况下应该启用它吗?一旦有人使用继承和虚拟的东西,在调试过程中看到真实的对象类型就非常重要。仅显示已声

c++ - GDB 观察实例 vector 中的类成员

这是我的类(class)的一个极其简化的版本:ClassMyClass{public:intsizeDesired;};我正在创建MyClass的vector主要实例:intmain(intargc,char**argv){std::vectormyvec;for(inti=0;i有一些内存损坏(我认为)错误导致我的程序崩溃。我观察到MyClass::sizeDesired的值程序崩溃时是垃圾。所以,我想在每个MyClass:sizeDesired上设置一个观察点成员,这样我就可以准确地看到这些成员的值何时发生变化。使用GDB,我该怎么做?当我在推送MyClass的所有实例后中断时在s

c++ - 简单代码导致错误读取变量: Cannot access memory at address

我正在尝试使用支持python的gdbMinGW-builds.我遇到了一个错误。这是一个相当简单的代码,在MSVC下调试时它工作正常。D:\CppProject\c1\bin\Debug>gdbc1.exeGNUgdb(GDB)7.6(copyright,license,bugreport,etcomittedhere)ReadingsymbolsfromD:\CppProject\c1\bin\Debug\c1.exe...done.(gdb)l1#include2#include34usingnamespacestd;56intmain()7{8vectorv;9v.push_b

c++ - 在分析代码时,我应该使用匹配的 (gcc) 编译器优化标志吗?

我正在使用-O3在编译代码时,现在我需要分析它。对于分析,我遇到了两个主要选择:valgrind--tool=callgrind和gprof.Valgrind(callgrind)文档状态:AswithCachegrind,youprobablywanttocompilewithdebugginginfo(the-goption)andwithoptimizationturnedon.但是,在C++optimizationbook由AgnerFog撰写,我已阅读以下内容:Manyoptimizationoptionsareincompatiblewithdebugging.Adebug

python - 遗留 GDB 脚本中堆栈跟踪的停止条件

我有一个遗留的GDB命令脚本,用于基于Python2.6源代码附带的GDB脚本获取Python堆栈跟踪(所以不允许超链接,但这是URL:http://#%20http://svn.python.org/view/*checkout*/python/branches/release26-maint/Misc/)该脚本有一个while循环,它基于要退出的程序计数器进行相当脆弱的检查,这(如评论中的原始代码中所述)可能仅适用于直接运行Python的情况,如果解释器从C/C++应用程序中启动。现有的while循环如下所示:while$pcPy_GetArgcArgv#...#codeforex

c++ - 保存并重新启动暂停的 gdb session

我的理解是gdb可以监控正在运行的程序的完整状态。我可以保存在断点处暂停的gdbsession并稍后恢复session吗?我的第一次尝试只是在断点处暂停的第一个gdbsession中生成核心转储,然后使用核心转储启动第二个gdbsession。Savingcorefileingdb这导致了以下错误。ProgramterminatedwithsignalSIGTRAP,Trace/breakpointtrap.所以断点信息被插入到程序状态中,有意思。在我第二次尝试时,我做了同样的事情,但这次我在第二个session中添加了与第一个session中相同的断点。Gettinggdbtosav

c++ - gdb/lldb 调用一个函数并在其中中断

我在一个长期运行的程序中有一个全局函数:inttest(){inta=12;intc=10;printf("a=%d",a);a+=c;printf("a=%d",a);returna;}我调试程序并中断,然后发出以下命令:(lldb)calltest()a=12a=22(int)$0=22(lldb)我希望它在我点击calltest()之后每一行都在test()方法中中断,而不是立即返回结果。任何人都知道该怎么做?------------------------------------下面回答------------------------------------@JasonMole

c++ - 使用 python 扩展在 gdb 中打印 Eigen 类型时遇到问题

我想在gdb中打印Eigen矩阵和vector,因此我添加了扩展名来执行此操作,可在此处找到:https://bitbucket.org/eigen/eigen/src/12a658962d4e/debug/gdb/printers.py但是,当我尝试在ddd中的某些Eigen类型上调用print时,出现以下错误:PythonException'map'objectisnotsubscriptable:PythonException'map'objectisnotsubscriptable:PythonException'map'objectisnotsubscriptable:基于t

c++ - 如何捕获 C++ 代码中奇怪的未定义行为?

我在服务器程序中有奇怪的行为。在简单的示例中,它工作正常(我在pion和asio中的任何地方都插入了跟踪)。#include#include#include#include#include#includeintmain(){pion::single_service_schedulershed;shed.set_num_threads(1);boost::shared_ptrserver(newpion::http::server(shed,5000));server->add_resource("/",handlerFunction);server->start();sleep(5);

[linux开发工具]小程序--进度条、调试器 - gdb

📙作者简介:RO-BERRY📗学习方向:致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识📒日后方向:偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持目录1.缓冲区2)\n和\r3.进度条ProgressBar.cProgressBar.hMakefilemain.c4.认识gdbgdb是什么gdb的作用5、gdb的使用GDB安装GDB的用法1.缓冲区第一种情况执行结果如下:可以看到程序先执行printf再执行sleep第二种情况执行结果如下:在这里为什么程序先执行sleep在执行printf呢?实际上也并没有先执行sleep再执行printf,C语言执行代码是顺序结构