草庐IT

c++ - 在 GDB 中打印子类成员

GDB中是否有一个设置可以自动从基类指针打印一个(C++)子类的所有成员,或者我是否总是必须在取消引用之前将其强制转换为子类指针。那是我不总是想做的:p*(SubClass*)baseClassInstance 最佳答案 setprintobjectshowprintobjectChoosewhethertoprintderived(actual)ordeclaredtypesofobjects.我想setprintobject是您所需要的,但它仅适用于多态类型。http://www.delorie.com/gnu/docs/gdb

c++ - 为什么 Eclipse 不使用 GDB 的 pretty-print ?

我在Ubuntu14.04和GDB7.7.1上使用Eclipse4.4.2。我正在尝试在Eclipse调试器中检查一些C++标准库容器的内容。到目前为止我已经尝试过:按照说明进行操作here,我运行了命令svncosvn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python将其复制到/home/myusername/prettyprint。然后我将此文本复制到我的.gdbinit中:pythonimportsyssys.path.insert(0,'/home/myusername/prettyprint/python')fromlibstdc

c++ - 从gdb中模板类的成员函数打印静态变量

我有一个简单的模板类:namespacetest{template>classDB{public:staticDB&instance(){staticDB_instance;return_instance;}private:DB(){};DB(DBconst&){};voidoperator=(DBconst&){};Container_db_internal;};}当我在gdb中调试时,我想查看_db_internal容器,但不知道如何访问它。我试着用gdb写:p'test::DB>::instance()::_instance'._db_internal它给了我:Nosymbol.

c++ - GDB 无法访问 mmap() 的内核分配内存?

我遇到了GDB问题和在内核空间中分配的一些缓冲区。缓冲区由一个内核模块分配,该模块应该分配连续的内存块,然后通过mmap()调用将内存映射到用户空间。然而,GDB似乎无法随时访问这些block。例如,在GDB中遇到断点后:(gdb)x/10xb0x4567e0000x4567e000:Cannotaccessmemoryataddress0x4567e000但是,查看/proc//smaps中应用程序当前映射的内存区域显示:4567e000-456d3000rwxs8913f00000:0d883/dev/cmemSize:340kBRss:340kBPss:0kBShared_Cle

c++ - 您如何为 Android NDK 调试 C++?

在Android上调试native代码有哪些选项?gdb是唯一可用的调试器吗?他们是VisualStudio集成吗?我查看了Android文档并进行了google搜索,但不确定我是否找到了正确的答案。希望一些SO专业人士可以让我免于反复试验的痛苦。但如果我的选择是gdb或printf,我将转而使用MonoforAndroid!解决方案!WinGDB适用于安卓系统。使用VisualStudio进行调试! 最佳答案 我自己没试过,但是这个blogpost解释了如何在VisualStudio中进行NDK调试。此外,我在工作中已经对NDK调

c++ - 如何通过 gdb 调试 nodejs 插件

标题我正在编写一个Node.JsC++插件,当我尝试按照我在互联网上搜索的方式调试我的C++添加时,它根本无法工作。我从网上得到的是gdbNode设置参数app.js运行我明白了/usr/local/bin/node":不是可执行格式:无法识别文件格式在类型文件/usr/local/bin/node之后我明白了/usr/local/bin/node:具有2种架构的Mach-O通用二进制文件/usr/local/bin/node(forarchitecturei386):Mach-Oexecutablei386/usr/local/bin/node(forarchitecturex86_

c++ - 无法在 gdb 中打印全局对象

我有这个简单的C++代码:#includeusingnamespacestd;vectorq;intmain(){q.push_back("test1");q.push_back("test2");cout当我使用gdb打印变量q时,出现以下错误:Nosymbol"q"incurrentcontext.我像这样使用g++编译我的程序:g++-ga.cpp这是我的gdb命令:gdba.outGNUgdb(GDB)7.12Copyright(C)2016FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisisf

【Linux】Linux开发工具(yum、gdb、git)详解

一、软件包管理器yum1、什么是软件包在Linux下安装软件,通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。但这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成在Windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。软件包和软件包管理器,就好比"App"和“应用商店” 这样的关系。yum(YellowdogUpdater,Modified)是Linux下非常常用的一种包管理器。主要应用在Fedora,RedHat,Centos等发行版上。Linux下安装软件的方式:源代码安装。rpm包安装。yum工具

c++ - Android ndk 上 OpenGLES 1.1 中具有 GLSurfaceView 模式的 FrameBuffers

在AndroidNDK中,是否可以使OpenGLES1.1使用典型的Java端GLSurfaceView模式(覆盖GLSurfaceView.RendereronDrawFrame、onSurfaceCreated等方法),同时在C++端使用框架、颜色和深度缓冲区和VBO?我正在尝试使用这个创建它们:voidES1Renderer::on_surface_created(){//Createdefaultframebufferobject.Thebackingwillbeallocatedforthecurrentlayerin-resizeFromLayerglGenFramebuf

c++ - GDB:我们如何从 std::tuple 中提取值

我们如何提取/打印std::tuple中的单个值?这是名为test.cc的文件中的示例程序。#include#includeusingnamespacestd;intmain(){autot=make_tuple(111,222);cout(t)(t)编译它g++--std=c++11-gtest.cc在gdb中运行gdb--args./a.out...(gdb)startTemporarybreakpoint1at0x400836:filetest.cc,line7.Startingprogram:/home/fmlheureux/a.outTemporarybreakpoint1,