编译器生成一些类方法,如复制构造函数、析构函数等。是否可以让gdb中断这些方法,例如,观察对象在哪里被复制或销毁? 最佳答案 Cangdbbreakonimplicitclassmethods?是的,当然可以。(gdb)breakMyClass::MyClass(constMyClass&)//breakwhencopied(gdb)breakMyClass::~MyClass()//breakwhenobjectdestroyed就这么简单。这些是基于断点的,不是基于文件:行,而是基于函数名。如果您有一个包装类的namespace
应用设置:我有使用以下第3方库的C++11应用程序:提升1.51.0cppnetlib0.9.4jsoncpp0.5.0应用程序代码依赖于几个内部共享对象,它们都是由我的团队开发的(针对这些共享对象执行经典的链接时间,没有使用dlopen等)我使用的是GCC4.6.2,在使用GDB7.4和7.6时出现问题。操作系统-RedHatLinux7.0(Guinness)x86-64问题在共享对象代码中遇到断点并发出gdbnext命令时,有时GDB会在没有任何合理原因的情况下向后跳转到某些行(特别是在抛出异常之后,对于那些异常有合适的catchblock)网络上的类似问题在“关闭所有GCC优化
我有一些C++代码并尝试调试它。main.cpp:#includeusingnamespacestd;intmain(){grapha;a.add(1);a.addEdge(1,2);std::vectoransw=a.getAdjacent(1);for(unsignedinti=0;i我在“图a;”上有一个断点。但是当我开始调试时,我得到:Thetargetendiannessissetautomatically(currentlylittleendian)NosourcefilenamedC:\Users\home\workspace\graphcpp\main.cpp.[New
std::unique_ptr很好,但我发现在DDD中调试时不太舒服或gdb.我正在使用作为gcc一部分的gdbpretty-print(例如,/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.py)。这是可读性的一大胜利,例如:$printpTeststd::unique_ptrcontaining0x2cef0a0但是,取消引用指针不起作用:$print*pTestCouldnotfindoperator*.当我需要访问该值时,我必须手动复制指针并将其转换为正确的类型,例如:print*((MyType*)0x2cef0a0)如果进
我正在使用GDB调试C++代码,当它进入某个包含标准库对象的对象的构造函数时,它向我展示了这些对象(如std::map)的构造函数以及所有相关内容在下面。我知道next运算符,但我更愿意基本上将任何标准库代码列入黑名单,这绝不是我正在调查的错误来源。希望的行为是一个简单的skip会把我送到下一个“用户区”代码。 最佳答案 gdb7.12支持文件通配以指定要在调试器中跳过的文件。相同的文档如下:https://sourceware.org/gdb/onlinedocs/gdb/Skipping-Over-Functions-and-F
我已经按照以下instructions安装了GDB7.0和python.在同一手册中,提到了这个文件stl-views-1.0.3.gdb.令我困惑的是它应该放在哪里才能漂亮地打印STL容器。有人会向我解释所有这些工作吗?谢谢 最佳答案 据我所知,STLView是检查STL容器的旧方法,并且几乎在所有方面都不如新的python支持。您应该改用libstdcxx_printerspythonpretty-print。 关于c++-使用gdb7.0打印STL容器,我们在StackOverfl
在GDB中,我可以通过发出类似callfoo("123")的命令来调用属于我正在调试的可执行文件的一部分的函数。我如何在OllyDbg(或其他一些主要是Windows的调试器)中做同样的事情? 最佳答案 我不知道如何使用OllyDbg做到这一点,但由于您提到了其他Windows调试器,您可以在WinDbg中使用.call命令。0:001>.callABC!DoSomething(1,2)Threadissetupforcall,'g'willexecute.WARNING:Thiscanhaveseriousside-effects
socket在gdb下突然崩溃(但正常工作)。这只会在我初始化winsock时发生。非常感谢任何帮助。#include#include#include#include#include#ifdef_MSC_VER#pragmacomment(lib,"ws2_32.lib")#pragmacomment(lib,"IPHLPAPI.lib")#endif#includeunsignedcharNetwork_isInitialized_=0;#defineSYSTEMINFORMATION_ISNATIVEWINDOWS1unsignedcharNetwork_init_(){#ifSY
使用MinGWGDB7.6版,得到很多这样的回溯:(gdb)bt#00x000000007703d256inntdll!RtlEnterCriticalSection()fromC:\Windows\SYSTEM32\ntdll.dll#10x0000000000000000in??()这不是很有用。这是为什么?无论如何,有什么更有用的吗?当this是我得到的回溯时,试图弄清楚一个复杂的多线程程序在做什么是绝对痛苦的。 最佳答案 我在使用MinGW64时遇到了同样的问题。使用编译器开关-g3-Og终于很好地展示了所有的回溯。
我使用Cmake+mingw来编译我的项目。由于某个未知的时刻,我的程序开始在启动时崩溃,我想出了如何让Windows为我崩溃的应用程序制作小型转储。我会使用GDB直接调试我的应用程序,但是当我使用GDB时程序不会崩溃。Googlebreakpad包含将minidumps转换为coredumps的工具,所以我尝试编译googlebreakpad但似乎breakpad不是windows解决方案。我正在寻找如何检查小型转储并找出我的程序在启动时崩溃的原因的解决方案。你是怎么做到的? 最佳答案 您不需要分析小型转储。相反,您可以将调试器设