gdb

GBD:如何查看存储在内存中的一系列值

作为我正在学习的一个大型项目的一部分,我需要破译大量的程序集。要判断这一点,我需要通过调试代码找到“炸弹”不同“阶段”的答案。目标是不引爆炸弹。看完之后,我决定需要查看read_six_numbers中的内容,如下所示:这导致我想知道0x3409中的内容,如下所示。所以我想我的答案应该是存储在不同%d中的六个数字。然而,当我在gdb中键入print0x3409时,我得到了13321,这是0x3409的十进制数,而不是实际存储在内存中的值。

c – 如何使用SIGSEGV的信号处理程序调试程序

目前我使用gdb作为调试工具.解决方法GDB将在应用程序执行之前捕获SIGSEGV.您对Logan的回答所描述的内容毫无意义.我怀疑真正发生的事情是应用程序创建了一个新进程,并且只在其他进程中获取SIGSEGV,而不是将GDB附加到其中的进程.如果我的猜测正确,以下命令可能会有用:您可能还想编辑和扩展您的问题:>你怎么知道有SIGSEGV开头?

C 0x线程静态连接问题

我有一些问题试图使用c0x线程功能静态链接程序.代码看起来这样((Compiler是gcc4.6.1在Debianx86_64测试)我链接到:当我执行程序时,我有以下错误:GDB调试输出如下所示:更新:与静态libstdc链接可能(可能)使此错误消失,并且编译的C0x程序可以在没有gcc4.6libs的系统上运行:但是,首先,我们应该在当前目录下创建一个符号链接到“libstdc.a”:(参考:h

来自根本未调用的函数的分段错误

id=v1.23-chrome32-firefox24您将看到我没有调用函数readFromIn(),一旦您尝试运行可执行文件就会发生分段错误.我重新运行gdb,这次,回溯和帧告诉我更多的信息.所以是啊..我想我已经提供了所有信息……

帮助gdb跟踪(或类似)

我有一个申请.我有源代码(在C中).无论如何我都可以编译它.添加我想要的任何工具.等等.但是,我不想用一堆printf来源代码.我希望能够生成某种类型的日志,该日志显示何时写入特定值(例如全局结构的某个成员)(其值更改).我希望能够显示源文件和行号,以及旧值和新值.我还希望能够按名称而不是地址指定值.但地址还可以.如果我可以指定一个函数的本地值,则可以获得奖励积分.我仍在试图找出gdb的跟踪命令.

GDB如何在运行时评估C表达式

在调试时,我最近注意到GDB能够在调试程序时评估“复杂”表达式,我想知道它是如何做到这一点的.例如,使用以下代码:我能够编译程序g-gmyprogram.cpp并在GDB中调试它,这允许我键入printv.at;并打印v.at==3,其值为true.我想知道GDB是如何做到这一点的.ThisSOquestion暗示它是“在内存中编译”的东西,但没有进一步详细说明,所以我想知道它是否使用某种JIT来使这一切工作或其他什么?他们是否有一个框架来在调试环境中动态评估C?

这可以让GDB识别预处理器符号吗?

我有很多很多C预处理器#define语句,这使我的C编程更容易.但是,在使用GDB进行调试时,符号列表中不会考虑预处理器“标签”.有没有办法让GDB识别#defined标签?

使用GDB和Eigen C库

我正在使用可从http://eigen.tuxfamily.org/下载的EigenC库.这是一个C库,可以更轻松地处理矩阵和数组.我使用g编译器和gdb进行调试.但是,我发现在使用gdb时我无法打印Matrix的内容(由Eigen提供).解决方法您必须安装可在eigen/debug/gdb/中找到的gdb扩展.文件开头的注释说明了如何安装它.