草庐IT

c++ - 为什么我不能进入GDB 中的C++ cout 标准库函数?

我写了一个简单的test.cc如下:#includeusingnamespacestd;intmain(){cout然后我编译了:g++-gtest.cc-otest.o我运行了gdb并在"Helloworld"行放置了一个断点:$gdbtest.o(gdb)b7(gdb)c然后gdb停在"Helloworld"行,但是当我运行时(gdb)s它无法进入cout函数。所以我的问题是,如何进入cout函数? 最佳答案 如果它没有链接到带有调试信息的标准库版本,它不知道如何进入库;它只能越过它(也就是说,运行直到控制权返回到带有调试信息的

c++ - 如何摆脱使用 gdb "s"命令进入 STL_vector.h?

主题。编译:g++-g-Wall-oprogramprogram.cpp运行:gdb-tui程序谢谢,哈维尔。 最佳答案 如果您有GDB7.4或更高版本,则有一个skip命令,可让您跳过函数或整个文件。将文件或函数标记为跳过后,它将不会再次进入。来自GDB手册--SkippingOverFunctionsandFilesskip[linespec]skipfunction[linespec]Afterrunningthiscommand,thefunctionnamedbylinespecorthefunctioncontainin

c++ - gdb 从函数打印静态变量

我们有一个C++程序,例如:int&Instance(){staticinttest;returntest;}intmain(intargc,char**argv){int&test=Instance();printf("%d\n",test);return0;}现在我正在尝试打印Instance::test,正如某些gdb文档所建议的那样:https://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_52.html然而,这会产生:(gdb)pInstance::testNosymbol"test"inspecifiedcontext.我正

c++ - gdb 打印命令中自静态包含字符串子类的递归输出

各位我正在使用OpenFOAM,它制作了自己的Foam::string和Foam::word类型,如下所示:(gdb)ptypeFoam::wordtype=classFoam::word:publicFoam::string{public:staticpointertypeName;staticintdebug;staticconstFoam::wordnull;private:voidstripInvalid(void);public:word(void);word(constFoam::word&);word(pointer,bool);word(pointer,size_typ

c++ - Mac C++/Mars eclipse gdb 调试在启动测试 96% 时挂起

当我尝试在MacElCapitan(10.11.5)上的EclipseMars(4.5.2)中调试一个简单的c++程序时,它卡在“启动测试(96%)”。我用自制软件安装了gdb。当我在终端中输入“whichgdb”时,它会显示“/usr/local/bin/gdb”。以下是问题和我的GDB设置的屏幕截图:http://imgur.com/a/JrMjN这与MacC++/Marseclipsegdbdebuglaunchingstuckat96%是同一个问题但它从未在那里得到解决。 最佳答案 您必须签署gdb才能被信任以控制另一个进程

c++ - 不遵循构造函数中的局部变量。这是 gdb 中的错误吗?

我目前在UbuntuLinux上运行gdb版本6.7.1,并在C++项目中工作。令人惊讶的是,我在尝试调试构造函数时发现在构造函数范围内声明的局部变量没有被gdb遵循或注意到。这是错误吗?感谢任何信息.. 最佳答案 这是一个bug在GCC中,而不是在GDB中。最近fixed. 关于c++-不遵循构造函数中的局部变量。这是gdb中的错误吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questio

c++ - 无法在 Qt Creator 中启动 gdb.exe

我在QtCreator中有一个构建良好的项目,但是当我尝试调试它时,我收到此消息:AdapterstartfailedUnabletostartgdb'C:\Qt\2010.02.1\mingw\bin\gdb.exe':Processfailedtostart:Thedirectorynameisinvalid如果我导航到调试构建文件夹并直接运行我编译的应用程序,它会运行良好,但显然没有调试支持。此外,gdb.exe位于C:\Qt\2010.02.1\mingw\bin\gdb.exe,但QtCreator似乎无法运行它。我该如何解决这个问题? 最佳答案

c++ - 我的应用程序可以安排 gdb 断点或观察吗?

有没有一种方法可以让我的代码插入断点或监视gdb将遵守的内存位置?(并且可能在未附加gdb时无效。)我知道如何在gdbsession中执行诸如gdb命令之类的事情,但是对于某些类型的调试,如果您明白我的意思的话,“以编程方式”执行它会非常方便——例如,仅错误发生在特定情况下,不是调用崩溃例程的前11,024次,也不是内存位置被修改的前43,028,503次,因此在例程上设置简单的断点或在变量上设置观察点是没有帮助的-这都是误报。我主要关心Linux,但很好奇是否存在适用于OSX(或Windows,尽管gdb显然不存在)的类似解决方案。 最佳答案

c++ - 无法在gdb中调用带有引用参数的函数

对于这个函数:voidfoo_ref(constint&i){cout在gdb中调用失败:(gdb)callfoo_ref(5)Attempttotakeaddressofvaluenotlocatedinmemory.当然,在这个简单的例子中,不需要使用引用作为参数。如果我使用普通的“int”,那没问题。实际上真正的例子是一个模板函数,像这样:templatevoidt_foo_ref(constT&i){cout当“T”为“int”时,出现上述问题。这是gdb中的错误吗?或者我可以在gdb中调用这样的函数吗? 最佳答案 这是可能

【Linux】环境基础开发工具的使用之gdb详解(三)

前言:上一篇文章中我们讲解了Linux下的gcc与g++的使用,今天我们将进一步的学习gdb与makefile来帮我们更好的理解与使用基础开发工具。💖博主CSDN主页:卫卫卫的个人主页💞👉专栏分类:Linux的深度刨析👈💯代码仓库:卫卫周大胖的学习日记💫💪关注博主和博主一起学习!一起努力!目录标题Linux下基础开发工具gdb调试方法1.启动gdb2.查看源代码3.运行程序4.设置断点5.查看断点信息6.执行下一行代码。7.查看变量8.退出gdbLinux下基础开发工具gdb调试方法程序的发布方式有两种,debug模式和release模式Linuxgcc/g++出来的二进制程序,默认是rele