基本上我想得到typeid(*this).name(),即this的真实类型。我想在GDB中得到这个(不修改源代码)。我试过printtypeid(*this)但它说typeid是未知的(因为我没有将它包含在源文件中)。 最佳答案 使用ptype命令,像这样:(gdb)ptype42type=int 关于c++-gdb:显示一些数据的类型信息,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/quest
我正在寻找有关创建自定义打印机的可靠教程。GDB页面上有一些稀疏的页面,但它们远未完成,还有很多想象空间!例如,我希望能够为我们的自定义共享指针类创建一个PrettyPrinter。 最佳答案 查看TomTromey的精美打印教程part1和part2.还有libstdc++-v6prettyprinterimplementation看看,这是我刚开始时用自己作为模板的。一个更简单的例子(在撰写本文时)是Boostprettyprinter由RüdigerSonderfeld. 关于C+
GNUgdbFedora(6.8-37.el5)内核2.6.18-164.el5我正在尝试调试我的应用程序。但是,每次我将二进制文件传递给gdb时,它都会显示:(nodebuggingsymbolsfound)这是二进制文件的输出,你可以看到它没有被剥离:vid:ELF32-bitLSBexecutable,Intel80386,version1(SYSV),forGNU/Linux2.6.9,dynamicallylinked(usessharedlibs),forGNU/Linux2.6.9,notstripped我正在使用以下CFLAGS进行编译:CFLAGS=-Wall-Wex
我正在尝试在eclipsecdt中为STL对象添加pretty-print。我尝试按照此处描述的步骤进行操作:http://sourceware.org/gdb/wiki/STLSupport我查看了python文件夹,但我似乎无法完成此操作...我创建了一个gdbinit并选择了我的调试配置,但每当我尝试开始调试时,我都会收到以下错误:ErrorwhileexecutingPythoncode.!STACK0java.lang.Exception:/home/lizardking/workspace/eu.sofia.kpi.cpp.x86.testapp/.gdbinit:6:Er
有谁知道如何保存gdb设置(如“setprintprettyon”或“setprintelements0”,均来自here)?我不想每次使用gdb时都设置我的配置:/我在google和SO中搜索过,但一无所获。 最佳答案 在您的主目录中的.gdbinit文件中添加您想要自动运行的任何命令。 关于c++-如何在gdb中保存设置?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/204
因为我需要一个支持Python的gdb,所以我通过安装了另一个版本brewtaphomebrew/dupesbrewinstallgdb我想将此gdb与EclipseCDT一起使用,我在调试设置中输入了二进制文件的路径。但是,启动调试程序失败并显示以下消息:ErrorinfinallaunchsequenceFailedtoexecuteMIcommand:-exec-runErrormessagefromdebuggerbackend:UnabletofindMachtaskportforprocess-id39847:(os/kern)failure(0x5).\n(pleasec
我正在用GDB调试一个C++程序。我有一个指向某个类的对象的指针。指针被声明为由几个子类扩展的某个父类(superclass)。对象中没有字段来指定该对象的精确类类型,但定义了一些虚函数(例如boolis_xxx())在运行时告诉类类型。有没有办法在不调用这些虚函数的情况下告诉GDB中对象的精确类类型。当程序是多线程时,在GDB中调用此类函数可能会产生令人困惑的结果。 最佳答案 使用ptype。如果你单独使用它,你会得到指针的声明类型:(gdb)ptypeptrtype=classSuperClass{//variousmember
使用gdb调试,任何使用STL/boost的c++代码仍然是一场噩梦。任何使用过STL的gdb的人都知道这一点。例如,在代码here中查看一些调试session的示例运行。.我正在尝试通过收集提示来减轻痛苦。您能否评论一下我在下面收集的提示(特别是您一直在使用的提示以及您建议对它们进行的任何更改)-我列出的提示是技术性的降序。有人在用"StanfordGDBSTLutils"吗?和"UCFGDButils"?是否有一些用于boost数据结构的工具?上面的实用程序似乎不能递归使用,例如用于在一个命令中以清晰的方式打印boost::shared_ptr的vector。编写您的.gdbini
根据文档,我可以通过使用条件断点来中断特定的异常类型。但是条件的语法对我来说不是很清楚:conditionbnum查看表达式语法我认为这是我需要的模式:{type}addr但是,我不知道应该为addr参数传递什么。我尝试了以下方法:(gdb)catchthrow(gdb)condition1boost::bad_function_call*但它不起作用(gdb中断所有异常类型)。谁能帮忙?更新我也尝试了@Adam的建议,但它导致错误消息:(gdb)catchthrowboost::bad_function_callJunkatendofarguments.没有boost::命名空间:(
我有一个使用两个线程的程序。我在两个线程中都设置了断点。在gdb下运行程序时,我想在线程之间切换并使它们运行。(线程t1处于事件状态并正在运行,线程t2;在断点处暂停时。我想停止T1运行并运行T2)。有什么方法可以在gdb中调度线程吗? 最佳答案 默认情况下,GDB会在遇到任何断点时停止所有线程,并在您发出任何命令时恢复所有个线程(例如continue、next、step、finish等),它要求下级进程(您正在调试的进程)开始执行。但是,您可以告诉GDB不要这样做:(gdb)helpsetscheduler-lockingSetm