问题标签 [gdb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
16588 浏览

iphone - 如何从 Xcode 4 中的断点操作打印字符串值?

我有一个断点操作,并且正在使用下拉菜单中的 Log 选项。我想打印出字符串(摘要)值。我正在这样做:

但这会打印内存地址。我可以切换到调试器命令选项并执行

但后来我失去了我的描述,就像第一个选项中使用的那样。使用 Log 选项,有没有办法打印字符串值而不是内存地址?

0 投票
1 回答
2830 浏览

debugging - 如何在 GDB 中打印类型属性?

有没有办法从 GDB 中打印类型属性?
例如整数大小。

0 投票
3 回答
1528 浏览

debugging - 如何在 QtCreator 中使用 gdbmacros.cpp?

我正在尝试在 Linux 上的 QtCreator 中进行调试,并收到以下消息:

调试的二进制文件不包含很好地显示 Qt 数据类型所需的信息。

您可能想尝试包含该文件

.../share/qtcreator/gdbmacros/gdbmacros.cpp

直接进入你的项目。

将 ~/qtcreator/gdbmacros/gdbmacros.cpp 添加到我的项目文件中没有帮助。

有任何想法吗?

0 投票
5 回答
57912 浏览

debugging - 如何在 GDB 中获取内存地址的符号名称?

例如,我知道 0x46767f0 属于一个 NSString*,有什么方法可以找出它是什么 NSString 来帮助我找到我想要的一些错误?

0 投票
3 回答
1886 浏览

dynamic - 通过 gdb 打印完整的控制流,包括变量的值

这个想法是,给定程序的特定输入,我想以某种方式自动介入整个程序并转储其控制流以及所有正在使用的数据,如类及其变量。他们是一种直接的方法吗?或者这可以通过 gdb 上的一些脚本来完成,还是需要在 gdb 中进行修改?

好的,这个问题的原因是因为关于调试工具的想法。它的作用是这样的。给定程序的两种不同输入,一种导致不正确的输出,另一种导致正确的输出,它将告诉控制流的哪一部分对它们不同。

所以我认为需要将这两个控制流完全转储到差异引擎中。如果这两个输入遵循相似的控制流,那么它们的差异(在许多情况下)会很好地说明为什么存在错误。

这可以成为一个非常吸引人的工具,在此基础上构建了许多功能。

0 投票
7 回答
18254 浏览

dynamic - 如何在 GDB 中自动打印下 N 个执行的行?

一段时间以来,我一直在尝试寻找一种方法来自动化 GDB 中跟踪程序控制流的进度。

甚至只是自动化n命令的一种简单方法,因此您可以查看调用例程的顺序。

我意识到您可以n x在 x 是 GDB 执行的次数的地方提出问题,但问题在于它显示了命令而不是例程的地址!但是如果你n在 GDB 中手动按下(然后按下回车键发出上一个命令)它会显示地址。

我在 GDB 中尝试了以下方法:

GDB 说<breakpoint 1 at 0x123456>。我输入:

但它没有按预期循环,也没有显示地址位置:-(。

任何帮助,将不胜感激!当然,自动记录调用的命令例程一定很简单??

0 投票
1 回答
150 浏览

c - 使用 gcc 在共享库中传播“-g”

我有一个程序abcabc使用该库defdef进而包含一个库ghi

现在,libghi.so使用gcc -g. libdef.so也使用. _ gcc -g但是,abc -g.

问题是,如果我使用调试abcgdb我应该能够看到和中的符号defghi

该项目非常大,编译需要几个小时,这就是为什么我在自己测试之前询问的原因。

0 投票
2 回答
1743 浏览

c++ - gdb 不接受 Emacs 中的标准输入重定向

我正在尝试在 emacs 中使用 gdb 模式调试程序。它是用 g++ 编译的,我使用的是 cygwin。我的程序接受一个命令行参数,并且还接受来自我从文件重定向的标准输入的输入,如下所示:

问题是,gdb 正在发送字符串

作为命令行参数而不是重定向标准输入。如何强制 gdb 重定向标准输入?

编辑:

在 gdb 中,我使用以下命令:

当我在 emacs 之外使用 gdb 时,它也不起作用。

编辑#2:

dfa 指出了一个类似的问题:How to load program reading stdin and take parameters in gdb?

不幸的是,该问题的公认答案对我不起作用……这可能是与 cygwin 相关的错误吗?

0 投票
5 回答
21028 浏览

assembly - x86 跳转到一个地址

作为安全类的分配,我试图__asm__("jmp 0xbffff994");在我的代码中使用,但是当我在 gdb 中反汇编东西时,指令更改为jmp 0xc8047e2a. 知道为什么以及如何跳转到特定地址吗?

0 投票
5 回答
3674 浏览

c++ - 使用 gdb 进行调试 - 最佳实践

我是 GDB 的初学者,我让它正常工作。但是,我想知道如何在大型项目中使用它。我有一个项目,其中使用 makefile 和 g++ 完成构建。为了让 GDB 工作,我们需要使用调试符号进行编译,对吧(g++ -g 文件)?

问题

  1. 我是否需要在 makefile 中创建一个新目标,比如“debug”,这样我就可以像make debug一样进行调试构建。这是最佳做法吗?
  2. 假设,我只需要调试 foo.cpp,除了构建包括 main 在内的整个程序之外,是否可以只为它生成调试符号?

有什么想法吗?