这可能是我在描述我的问题时遇到的困难是我找不到其他人的原因。我使用的是gdb7.4-2012.04。至少看起来任何包含!=/==和&&/||的表达式forvectors或vectoriterators将无法在gdb中评估并出现以下错误:无法访问地址为0x0的内存这是一个测试用例,后面是我的编译行和测试:#include#include#include#includeusingnamespacestd;typedefcharGUID[32];intmain(intargc,char**argv){vectorvec;for(inti=0;i::iteratorvecIter=vec.be
我正在使用NetbeansC++8.0.2clang++(Ubuntuclang版本3.6.0-2ubuntu1(tags/RELEASE_360/final)(基于LLVM3.6.0))gdb(GNUgdb(Ubuntu7.9-1ubuntu1)7.9)在我的“C++简单测试”中,每当我检查一个shared_ptr变量时,我看到的所有值都是:std::shared_ptr(count1,weak0)0x64d3a0或类似的。无法深入了解它实际指向的值。即使变量窗口中的TreeView显示了其中一个扩展器图标,当我单击它时它也会消失。当我尝试取消引用它或在“表达式”窗口中调用它的get
我正在查看gdb中的回溯,它看起来非常困惑,因为对标准库和boost进行了所有调用。例如。我在调用堆栈上看到boost::bind和std::allocator,以及对标准库或Boost的其他几个类似调用。我想我会发现让回溯只显示我的程序中明确定义的函数会很有帮助。更好的是,如果我可以快速配置backtrace命令以在需要时显示或隐藏std和boost调用,这将有进一步的帮助。知道如何从调用堆栈中完全隐藏boost或配置回溯以打开和关闭boost日志记录吗? 最佳答案 没有内置方法可以做到这一点。不过,可以通过编写一个Python“
我正在尝试运行一个测试程序以查看gdb(回溯)如何显示调用堆栈。我有以下程序#include#includevoidfun2(){assert(0);}voidfun1(){fun2();}intmain(){fun1();return0;}然后我做了以下事情:g++-gdump.cpp-oout./outout:dump.cpp:16:voidfun2():Assertion`0'failed.Abort(coredumped)gdboutcore.28149(gdb)btNostack.//Whydoesitshownostackhere我原以为它会将调用堆栈显示为:fun2fun
这个问题在这里已经有了答案:HowtofindwhichthreadcausedSEGFAULTinapost-mortemgdbsession?(1个回答)关闭7年前。我的应用程序使用了8个以上的线程。当我在gdb中运行infothreads时,我看到线程和它们正在执行的最后一个函数。对我来说,究竟是哪个线程导致了SIGSEGV似乎并不明显。有可能告诉它吗?是线程1吗?线程是如何编号的?
我正在使用EclipseCDT在Ubuntu中调试C++项目。GUI,即显示要执行的下一行源代码的小箭头,与实际执行不一致。具体来说,它在实际执行线下方约30行。我通过检查局部变量的值以及它们何时更改来确定实际行是什么。我曾多次尝试清理项目,包括手动删除所有已编译的目标代码、库等,希望这会导致Eclipse自行更新,但它坚持显示错误行。感谢任何帮助。 最佳答案 Eclipse显示的源代码和实际用于编译可执行文件的源代码很可能是同一文件的不同版本。您可以询问GDB(Eclipse有一个用于GDB的控制台窗口)实际用于构建可执行文件的源
anisha@linux-dopx:~>g++-Wall-pedanticbreakpoints.cpp-ganisha@linux-dopx:~>gdba.out(gdb)bX::XBreakpoint1at0x400ac1:filebreakpoints.cpp,line14.Breakpoint2at0x400aa0:filebreakpoints.cpp,line9.warning:Multiplebreakpointswereset.Usethe"delete"commandtodeleteunwantedbreakpoints.(gdb)设置断点的方法是什么在默认构造函数上
我有一个程序的调试版本(V8JavaScriptVM),我想了解某些类的实例是如何在内存中布局的。我可以像这样漂亮地打印结构:(gdb)printthread_local$6={blocks_={data_=0x868ceb0,capacity_=7,length_=1},entered_contexts_={data_=0x868d828,capacity_=1,length_=1},saved_contexts_={data_=0x868d838,capacity_=1,length_=1},spare_=0x0,ignore_out_of_memory_=false,call_d
我正在尝试使用GDB的pretty-print工具来显示自定义C++矩阵类。类(class)非常标准,您可以在任何地方找到。它是一个由类型参数化的模板,可以使用mat[i][j]等C类型符号访问。这首先隐式返回另一个表示行或列的模板“Slice”类,[]运算符可以再次访问它以提取数据。该类本身使用普通C数组进行存储,但它在其上实现了一些技巧,例如预分配更大矩阵的选项、启用非零开始、使用步幅等。该类没有native打印接口(interface),我无法修改它,也无法轻松链接到我自己的代码。自定义功能使得在Python中重现直接数据访问代码变得很痛苦。但那有必要吗?一般来说:为什么pret
我有一个auto_ptr,其中IFoo是一个只有纯虚拟方法的接口(interface)。我现在在段错误后还有一个核心文件,我真的很想知道这个auto_ptr背后的具体子类是什么。作为dynamic_cast在项目中工作,我认为RTTI必须以某种方式可用,但我不知道如何通过gdb访问此信息。?我得到的输出如下:(gdb)printthis->obj._M_ptr$22=(classmartin::IFoo*)0x7418我真正想知道的是,指针是否属于IBar或IBaz.感谢您的帮助! 最佳答案 WhatI'dreallyliketok