jjzjj

binutils-gdb

全部标签

c++ - 使用 gdb 调试 C++ 模板

当我在带有模板的函数内部调试时,我如何知道当前函数正在使用哪种模板类型?我试过了pT.它说gdb无法打印类型。如何中断特定模板类型?假设函数foo(...)有2种可能的形式,foo(...)和foo(...).如何设置断点以便gdb仅在第一个使用int的断点处暂停,但不是第二个使用long的?编辑:如果断点可以按行号设置就好了。这有很多很好的理由,例如。函数的初始部分可能需要很长时间才能运行,我希望调试的地方可能在if中声明等 最佳答案 要为所有实例设置断点,请使用:gdb>rbreakFoo只在已知实例上设置断点gdb>break

c++ - VS Code 上的简单 GDB C++ 调试失败并出现 NullReferenceException

我的源代码file.cpp:#includeusingnamespacestd;intmain(){intx=1;inty=2;cout我使用g++-gfile.cpp编译它,然后我的launch.json文件是这样的:{"version":"0.2.0","configurations":[{"name":"(gdb)Launch","type":"cppdbg","request":"launch","program":"${workspaceFolder}/a.out","args":[],"stopAtEntry":false,"cwd":"${workspaceFolder}

c++ - 在 gdb 中跟踪对类实例/内存范围的写访问

我正在尝试调试我在大学类(class)中用C++编写的小型操作系统。在运行时某处我的对象之一被损坏。这似乎是由于不小心写入了错误的内存地址而发生的。由于我无法从纯看代码找到发生这种情况的地方,我需要另一种方式。由于这是一个操作系统,我无法将valgrind之类的工具附加到它,但我可以在附加了gdb的模拟器(bochs/qemu)中运行它。gdb中是否有一种方法可以跟踪对类实例或更一般的特定内存范围的写访问?我想在写访问发生时立即中断,这样我就可以验证这是否有效。 最佳答案 你可以放置一个观察点:watchx当x被修改时,这将中断。x

c++ - 在 gdb 上漂亮地打印 boost::unordered_map

最近我开始在我的系统上使用优秀的boost::unordered_map,但有一个缺点:我不知道如何检查它的内容。在gdb上打印它给了我一个table_和一个buckets_,但还没有找到项目在哪里。有人知道这件事吗? 最佳答案 对于那些想要打印机的人,我已经设法制造了一台。这是代码:classBoostUnorderedMapPrinter:"printsaboost::unordered_map"class_iterator:def__init__(self,fields):type_1=fields.val.type.temp

arm环境使用GDB调试

前言        调试设备代码的时候,经常碰到程序异常或者功能对不上,以前这种时候就是加打印消息,然后重新编译把程序放进去跑,通过打印消息来判断代码出问题的点在哪里,但是有的时候可能需要反复加多次才能定位到问题点,而使用gdb调试就可以很快找到问题,非常效率,虽然GDB调试的文章已经很多了,但还是想写写来记录一下。前期工作        我使用的是主机端使用gdb,设备端使用gdbserver的方式去调试,所以需要在先编译一个arm版本的gdbserver我所使用的编译器:arm-linux-gnueabihf-gccgdb源码版本:gdb-8.3编译生成的程序我已经上传到我的gitee,如

c++ - gdb:tstart 错误 "You can' 的含义 t 当你的目标是 `exec' 时执行此操作“

我想记录一个局部变量的值,t,每次程序到达某一行时。因此,我尝试了:(gdb)tracestoer_wagner_min_cut.hpp:197Tracepoint1at0x4123a0:file./boost/graph/stoer_wagner_min_cut.hpp,line197.(gdb)actionsEnteractionsfortracepoint1,oneperline.Endwithalinesayingjust"end".>collectt>end(gdb)tstartYoucan'tdothatwhenyourtargetis`exec'(gdb)breakmai

ios - 不调用 ObjC 类方法。 GDB玩游戏?

我有一个自定义的UITableViewController,我试图用它来管理UITableView。我的代码在包含UITableView的主UIViewController中的流程如下所示:_messagesTableVC=[[AllMessagesTableViewControlleralloc]init];_allMessageTableView.dataSource=_messagesTableVC;_allMessageTableView.delegate=_messagesTableVC;[_allMessageTableViewreloadData];AllMessages

objective-c - Objective-C : Where to find <process id> in gdb?

我正在尝试使用NSZombie调试我的程序。调试器确实向我返回了有问题的实例的地址,但是我不确定在哪里可以获得运行命令'shellmalloc_history所需的pid谁能告诉我在这种情况下使用的正确pid是什么?我尝试了3298和3298:707,但它们都不起作用。在此感谢任何帮助。郑和2011-05-1916:57:05.779CarParkDemon[3298:707]intableviewcellforRowMethod32011-05-1916:57:05.781CarParkDemon[3298:707]***-[CFStringretain]:messagesentto

搭建嵌入式GDB调试环境以及VSCode+gdbserver 图形化调试

目录1搭建嵌入式gdb调试环境1.1 交叉编译工具链自带的gdb和gdbserver1.2使用gdb进行嵌入式程序调试1.2.1编写简单测试程序1.2.2gdb调试程序1.3源码编译gdb和gdbserver1.3.1下载gdb和gdbserver源码 1.3.2编译gdb1.3.3移植gdbserver2VSCode+gdbserver图形化调试1搭建嵌入式gdb调试环境一般的桌面Linux系统,比如ubuntu、centos等,我们可以直接运行gdb来调试程序。但是嵌入式中芯片性能一般比较弱,所以直接在嵌入式系统中运行gdb不太现实(性能强大的嵌入式芯片可以这么做)。嵌入式系统中一般在PC

ios - gdb 无法在 iphone 5.1.1 上加载共享库

我正在尝试转储iOS上已执行应用程序的内存(使用gdb)。但是gdb不能转储任何数据。(准确的说,dump出来的数据是用0x00填充的。)根据其他网站上的说明,当gdb附加到一个进程时,将开始加载共享库。但是,mime不加载库。以下是附加到进程时的确切消息。root#gdb-p4570GNUgdb6.3.50.20050815-cvs(FriMay2008:08:42UTC2011)Copyright2004FreeSoftwareFoundation,Inc.GDBisfreesoftware,coveredbytheGNUGeneralPublicLicense,andyouare