这个问题在这里已经有了答案:关闭11年前.PossibleDuplicate:CanIsetabreakpointon'memoryaccess'inGDB?我在内存中有一个特定位置正在损坏,我希望能够准确地看到写入该位置的时间。有什么方法可以让gdb中断对该特定地址的内存访问? 最佳答案 是的。使用观察点:watch-仅在写入时中断(并且仅在值更改时)rwatch-读取时中断,并且awatch-读/写中断。来自一些互联网资源的更详细的简介:观看watch是gdb设置数据断点的方式,如果指定位置的内存发生变化,它将停止程序的执行。可
如何配置QtCreator和/或gdb,以便在使用Qt库调试我的程序时,调试器可以避免进入Qt的源文件? 最佳答案 您需要关闭auto-solib-add。在正常的gdb提示符下,您可以输入:(gdb)setauto-solib-addoff在QtCreator中,在Options->Debugger->Gdb下,您可以指定Gdb启动脚本。创建一个包含“setauto-solib-addoff”命令的文件,然后将Gdb启动脚本设置为该文件。 关于c++-使用gdb在QtCreator中调
我一直在谷歌上搜索并检查gdb手册,但似乎无法找到我正在尝试做的事情的答案。有没有办法让gdb打印出给定类类型的所有方法的列表?print命令似乎只显示数据成员和字段,没有显示任何方法。此外,更进一步,有没有办法打印给定基*指针的所有正确虚拟方法?比如说:structA{virtualvoidfoo(){}};structB:publicA{voidfoo(){}};intmain(){A*b=newB;}如何让gdb打印变量*b并让它显示正确的虚拟方法?谢谢 最佳答案 你可以使用ptype。假设我将这些行添加到您的示例中:Aalp
基本上我想得到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