草庐IT

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,

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++ - 是否只有当调用堆栈中存在某个方法时才可以在断点处中断?

假设我有一个方法foo,当遍历对象的层次结构时,它会被不同的方法调用。是否有可能在方法foo内部中断,只有当它被方法bar调用时(所以bar存在于调用堆栈中)?LLDB或GDB是否支持这样的用例? 最佳答案 最新版本的gdb附带了一些用Python编写的便利函数,就是为了这种情况。看看$_caller_is和friend。(FWIW这个确切的用例是促使我致力于将Python添加到gdb的原因......)一个简单的用法是:(gdb)breakfooif$_any_caller_matches("bar")如果调用堆栈在foo和bar

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++ - _IO_wide_data_2 : what's this?

我在嵌入式平台上工作(架构是SH4),几分钟前我的程序因SIGABRT而崩溃。幸运的是,我在gdbserver下运行,被这个信号中断的线程有这个堆栈转储:#00x2a7f1678inraise()from/home/[user]/target/lib/libc.so.6#10x2a7f2a4cinabort()from/home/[user]/target/lib/libc.so.6#20x2a81ade0in__libc_message()from/home/[user]/target/lib/libc.so.6#30x2a81f3a8inmalloc_printerr()from/

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似乎无法运行它。我该如何解决这个问题? 最佳答案