我可以在gdb中更改RET的绑定吗?

时间:2014-07-29 20:41:05

标签: gdb

我想要禁用gdb行为,其中键入回车符重复执行输入的最后一个命令。我不喜欢什么都不做。这可能吗?

2 个答案:

答案 0 :(得分:2)

似乎重复大多数命令是默认的gdb行为,并且没有设置可以更改它。这就是gdb的源代码:

/* Handle a complete line of input.  This is called by the callback
   mechanism within the readline library.  Deal with incomplete
   commands as well, by saving the partial input in a global
   buffer.  */

static void
command_line_handler (char *rl)
{
 ...
  int repeat = (instream == stdin);

因为如果repeatinstream,您可以看到STDIN已分配1。没有其他方法可以为repeat分配不同的值。

所以你可以做的是从gdb的源代码(http://ftp.gnu.org/gnu/gdb/)在你的机器上构建自己的gdb可执行文件。但是在构建更改gdb / event-top.c中的第591行之前。而不是

int repeat = (instream == stdin);

int repeat = 0;

答案 1 :(得分:1)

一个可行的技巧 - 我没有尝试过 - 将使用Python设置提示回调以调用" dont-repeat"。

对我来说似乎是一个合理的功能请求,gdb有一个禁用命令重复的设置。