草庐IT

MinGW-gdb

全部标签

c++ - 单步执行 std::function 调用时如何跳过 std 命名空间中的方法调用? (使用 GDB。)

如果我需要通过std::function调用,使用调试器单步执行函数对象可能会非常困惑。是否可以通过某种方式跳过这些帧? 最佳答案 gdb7.4为此添加了skip系列命令。(gdb)aproposskipinfoskip--Displaythestatusofskipssetstep-mode--Setmodeofthestepoperationshowstep-mode--Showmodeofthestepoperationskip--Ignoreafunctionwhilesteppingskipdelete--Deletesk

c++ - 为什么 gdb 在 !=/== 和 &&/|| 时不能计算函数组合在一个表达式中?

这可能是我在描述我的问题时遇到的困难是我找不到其他人的原因。我使用的是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

c++ - 如何深入研究 shared_ptr [Netbeans、clang++、gdb]

我正在使用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

c++ - GDB 显示无堆栈

我正在尝试运行一个测试程序以查看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

c++ - 在 gdb 中使用核心转储时,我如何确切知道哪个线程导致了 SIGSEGV?

这个问题在这里已经有了答案:HowtofindwhichthreadcausedSEGFAULTinapost-mortemgdbsession?(1个回答)关闭7年前。我的应用程序使用了8个以上的线程。当我在gdb中运行infothreads时,我看到线程和它们正在执行的最后一个函数。对我来说,究竟是哪个线程导致了SIGSEGV似乎并不明显。有可能告诉它吗?是线程1吗?线程是如何编号的?

c++ - 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)设置断点的方法是什么在默认构造函数上

c++ - 如何使用 gdb 查看 C++ 类在内存中的布局?

我有一个程序的调试版本(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

c++ - 我可以在 gdb pretty-print 中直接调用程序的 `operator[]` 吗?

我正在尝试使用GDB的pretty-print工具来显示自定义C++矩阵类。类(class)非常标准,您可以在任何地方找到。它是一个由类型参数化的模板,可以使用mat[i][j]等C类型符号访问。这首先隐式返回另一个表示行或列的模板“Slice”类,[]运算符可以再次访问它以提取数据。该类本身使用普通C数组进行存储,但它在其上实现了一些技巧,例如预分配更大矩阵的选项、启用非零开始、使用步幅等。该类没有native打印接口(interface),我无法修改它,也无法轻松链接到我自己的代码。自定义功能使得在Python中重现直接数据访问代码变得很痛苦。但那有必要吗?一般来说:为什么pret

c++ - MinGW 链接单个 EXE

我安装了MinGW,我只想将我的程序链接到一个EXE文件中。我希望能够将此EXE文件提供给某人,而不必担心所有libgcc_s_dw2-1.dll、libstdc++-6.dll或任何其他DLL。有没有办法将所有必需的库静态链接到一个EXE中?我正在Windows7上开发。 最佳答案 链接库时可以使用-static选项,对于libgcc和libstdc++使用以下选项:-static-libgcc-static-libstdc++ 关于c++-MinGW链接单个EXE,我们在StackO

c++ - gdb - 防止在捕获/重新抛出情况下丢失回溯

是否可以在不丢失gdb中的回溯的情况下重新抛出异常?或者在gdb中是否有一种方法可以“备份”几行并从那里回溯?我使用的是最新的GDB7.7.1。我有时发现自己遇到这样的情况,需要从最初抛出的异常开始回溯,需要注释掉try/catch部分,重新​​编译,然后在gdb中重新运行。try{someFuncThatCanThrowException();}catch(exceptionType&exception){if(@CAN_RECOVER@){...}else{throw;}}----或者----try{someFuncThatCanThrowException();}catch(ex