问题标签 [gdbinit]

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 投票
1 回答
156 浏览

c - 跟踪 gdb 中函数执行的所有变量

我想跟踪 C 函数中所有变量的状态。

我知道我可以在 gdb 中使用 info 命令来获取当前上下文中的所有变量状态。

我可以使用 gdbinit 来自动化 gdb。

但我想做的是在函数处设置一个断点,然后在执行每一行 print 后执行 info 命令。

基本上,我想设置 2 个断点:一个在函数的开头,一个在同一个函数的结尾(我不知道怎么做),并在这两个点之间逐行执行。

我想要这样的东西在我的gdbinit

有没有办法让上面显示的while循环?

0 投票
1 回答
662 浏览

debugging - 配置 GDB 以仅加载特定符号

我有一个拥有 100 多个共享库的巨大单体。其中一些是如此巨大,以至于如果我让 GDB 加载所有符号,几乎我所有的 PC RAM 都被填满了,我无能为力。所以我想禁用加载所有库,只加载我需要的库。我分两步完成:

禁用加载所有符号

应用程序启动后,仅加载所需的库

现在我的意图是使用 .gdbinit 文件(也由我的 IDE QtCreator 加载)自动执行此操作。但是,鉴于这些命令是在 GDB 启动期间执行的,我不确定如何在不知道是否加载了相应的库的情况下执行第二个命令。非常感谢任何帮助。谢谢你。

0 投票
1 回答
1186 浏览

debugging - 无法在 gdb 中禁用分页

我似乎无法在 gdb 中禁用分页。set pagination off我已经阅读了所有建议向我的 ~/.gdbinit 文件添加或set height 0或添加的各种答案set height unlimited,并且我已经尝试了所有这些答案,但 gdb 似乎都忽略了它们。当我启动 gdb 时,它显然正在读取 ~/.gdbinit 文件,因为我可以设置自动加载安全路径,但是每次启动时,我都必须再次按 enter 才能启动 gdb,这非常令人沮丧. 就好像它只是完全忽略了分页关闭命令。我也尝试将这些命令添加到系统范围的 gdbinit(in /etc/gdb/gdbinit),但这也不起作用。

对于它的价值,我正在运行带有 GDB 版本的 Xubuntu 18.04 (GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git)。.gdbinit 文件当前读取:

编辑:澄清一下,由于各种原因,我的终端必须相当短(大约 13 行)。当我启动 GDB 时,我会看到以下内容:

点击 后<return>,将显示其余的介绍信息,我可以开始使用 GDB。这对我来说不是可取的行为,如果没有发生这种分页,我会更喜欢。

0 投票
1 回答
30 浏览

gdb - GDB 定义命令:print $arg1 在定义时不打印正确的值

我想定义一个新命令,它基本上在一行上设置断点,打印某个变量的值,然后继续执行。不幸的是我遇到了问题。这是我正在使用的代码

所以我想打印len定义在linked_list.h:109. 我执行以下代码:

似乎$arg1in printfunction 没有被实际参数替换。我究竟做错了什么?

0 投票
2 回答
60 浏览

c - 如何在gdb中进行基本参数传递

.gdbinit 当我想以十进制格式查看“堆栈”时,我在其中定义了以下内容:

现在我可以输入如下内容:

默认情况下,它将打印 5 个 8 字节的值。如何使用输入参数来使用我传递的数字而不是 5?例如,类似:

另外,我熟悉python,所以只要我可以访问输入参数,我也可以使用它,即:

0 投票
2 回答
343 浏览

gdb - 如何让 gdb 忽略 .gdbinit

我已经为我的 ~/.gdbinit 设置了一些用于特定配置的命令。

有时我想启动 gdb 以忽略 .gdbinit。

是否有一种机制可以忽略 .gdbinit 或被另一个 .gdbinit 覆盖?

0 投票
1 回答
388 浏览

gdb - GDB 没有采用放置在 ~/.gdbint 和/或 ~/.gdbrc 文件中的指令

我正在使用 GDB 调试我的 C 程序。而且因为我正在处理SIGUSR1我的程序。因此,一旦我使用我的程序可执行文件运行 gdb,例如 -

在 gdb 提示下(gdb)我需要输入 -

因为我每次都需要这样做,所以我想把这个handle命令放在初始化脚本中。所以在谷歌搜索之后,我了解了~/.gdbrcand ~/.gdbinit。我试图将handle命令放在这两个文件中,但在 gdb 从可执行文件中读取符号后,我仍然没有看到该句柄命令被执行一次。

这有什么问题?

编辑GNU gdb (GDB) 7.2.2

编辑 2:我的 .gdbrc 文件内容看起来像 -

编辑 3:即使我尝试使用 GNU gdb (GDB) 8.1.3我仍然面临同样的问题。

编辑 4~/.gdbrcand~/.gdbinit被授予完全访问权限-

编辑 5:我错误地将文件命名为“ .gdbint”而不是“ .gdbinit”。重命名后,我发现GDB 8.1.3它在启动时正在读取。但是,GDB 7.2.2我仍然看到问题 -.gdbinit启动时未读取文件。

并且~/.gdbrc不是正确的文件名,GDB 无法识别。

0 投票
1 回答
31 浏览

gdb - 从 gdb exec 获取返回

.gdbinit我调用函数

call open("tmp/test",1)

然后我得到了返回值

$15 = 1

我想使用$15到下一个操作。

我怎样才能把这个 var 放到.gdbinit下一行?

0 投票
1 回答
67 浏览

makefile - 如何在多行 Makefile 变量中包含以“define”开头的字符串?

在 GNU Makefile 中,我使用多行变量语法定义临时文件的内容,如下所示:

这个文件恰好是一个 GDB 脚本,它支持具有以下语法的函数定义:

我想你已经看到了问题:

make吐出以下错误:

在我上面发布的链接中,GNU 自信地解释了该功能:

您可以嵌套定义指令:make 将跟踪嵌套指令并在它们没有全部被 endef 正确关闭时报告错误。请注意,以配方前缀字符开头的行被视为配方的一部分,因此出现在此类行上的任何 define 或 endef 字符串都不会被视为 make 指令。

因此,如果我听从该建议并\t在每行的开头插入配方前缀字符 ( ):

它很高兴地解析了这个,但是当我将它写入配方中的文件时,现在每行的前面__FOO__都有一个前导:\t

在很多情况下这可能没问题,但我可以想象它会导致一些潜在的模棱两可的内容,我宁愿明年不享受调试。

我应该如何处理这个 - 包括一个带有前导的字符串define,并且在输出中没有前导选项卡?

0 投票
1 回答
67 浏览

python - 如何使用python进入gdbinit脚本

gdbinit当 gdb 初始化时,我使用文件来运行一些命令。

我怎样才能使用那里的python命令?而是使用 x/x $pc我想binascii在 $PC 注册后打印 10 个字节。

我怎样才能做到这一点?