问题标签 [gud]

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 投票
3 回答
2667 浏览

emacs - Emacs/GDB:始终使用 gdb-many-windows 在特定窗口中显示源代码

我在 Emacs 24 中使用 GDB 并gdb-many-windows设置为t,通常在它自己的框架中。我喜欢有一个单独的编辑框。它看起来像这样(为我粗略的 ASCII 图道歉):

这工作得很好,除了一个大问题。每当 gdb 需要显示不同的源缓冲区时,例如,在 up/down/step 之后,它并不总是在“源”窗口中显示它。例如,如果我在不同框架的窗口中打开了相同的缓冲区,它将提升该框架,同时将键盘焦点保持在 gdb 框架中。当框架相互覆盖时,这在单显示器设置中真的很烦人。

我希望 gdb 始终使用 gdb-many-windows 设置中的源窗口来显示源,无论是否在其他地方显示相同的源缓冲区。我怎样才能做到这一点?


编辑:更详细的复制说明。我将 Emacs 24.2.1 与 GDB 7.5-ubuntu 一起使用。我在 Ubuntu 10.04 和带有 Cinnamon 的 Linux Mint Nadia 上看到了这个问题。

  • 评估这个表达式:(setq gdb-many-windows t)
  • 用至少两个文件编译一个 C 程序。

例如:

  • 让 bar.c 显示在主框架中。用 . 打开一个新框架M-x 5 2。在该框架中,使用M-x gdb. 如上所示,该框架中应该有六个窗口。将 gdb 框架放在源框架的顶部。
  • 设置断点main并逐步调用foobar。当bar被调用时,主框架将被提升到 gdb 框架上,因为 bar.c 已经在那里可见,但键盘焦点将保留在 gdb 框架中。

我认为问题函数gdb-display-source-buffer在 gud.el.gz 中。我打算尝试用 覆盖它defadvice,但我不太熟悉建议。如果我弄明白了,我会在这里发布答案。

0 投票
1 回答
80 浏览

emacs - 如何强制欧洲央行将 GUD 缓冲区视为编译缓冲区?

我试过这样做:

在此处输入图像描述

但它似乎不起作用。我做错了什么?

0 投票
1 回答
1882 浏览

python - 将 ipdb 与 emacs 的 gud 一起使用,而无需在代码中设置显式断点

我正在使用 python.el 如果我从菜单中选择“调试器”,然后输入“python -m pdb myfile.py”,gud 启动,并且在拆分框架中我看到(Pdb)提示符和我的 python另一行的代码在第一行带有插入符号,表示它已准备就绪。例如,'n' 步到下一行,插入符号相应地移动。

相反,如果我输入“python -m ipdb myfile.py”,则帧拆分,其中一个拆分标记为 gud,但没有明显的 ipdb 控制台。换句话说,这种启动ipdb的方式似乎行不通。如果我使用 ipdb.set_trace() 手动将断点插入到我的 python 代码中,则 Ipdb 工作正常,但它不使用 gud 接口。这是故意的,以便 ipdb 的堆栈跟踪能够很好地工作吗?

如果是这样,那很好,但是有没有办法从 emacs 启动 ipdb 而无需手动添加 set_trace() 命令?

0 投票
2 回答
144 浏览

emacs - 以编程方式将 Emacs 窗口设置为输入焦点

如何以编程方式强制我的 Emacs X Window 获得当前用户输入焦点?

我想在下面的 Bash 脚本中使用它

使 Emacs 窗口自动获得窗口焦点。

0 投票
2 回答
804 浏览

emacs - 运行gud-gdb时如何自定义可执行文件名

我正在使用 emacs 24.3.1 编写程序(在 C 和 C++ 模式下)。

编译当前缓冲区后,我运行以下命令:Mx gud-gdb。Emacs 给出如下提示: gdb --fullname prog

但是,有时“prog”名称与从当前缓冲区编译的可执行文件名称不同。例如,我完成了五个程序 prog1、prog2、... prog5,目前正在研究 prog6。但是 Mx gud-gdb 给了我 gdb --fullname prog5。(我想要 prog6 代替。)

有没有办法纠正这个问题?具体来说,“正确”意味着强制 gud-gdb 使用当前缓冲区的名称(不带后缀)作为 prog 名称。

提前致谢。

0 投票
0 回答
164 浏览

debugging - Emacs 中 GDB 中的 `info args`

Emacs 的 GDB 集成使Locals Buffer几乎显示了(gdb) info locals. 有没有办法也显示(gdb) info args当前帧的结果(每次选择另一个帧时都不必手动输入)?

0 投票
2 回答
2339 浏览

regex - 如何修复emacs中的“正则表达式匹配器中的堆栈溢出”

我是 Emacs 的忠实粉丝,并且经常使用它,尤其是在编程和调试(使用 gud)(C/C++)时。

最近我不得不调试一个程序(相当简单,但需要计算大量数据(图论)),但我遇到了一个相当烦人的问题。在程序的逐步执行过程中,我收到以下错误:

我做了一些研究以找出它是什么,我发现了这篇文章:Debugging in emacs (with gud) 通常会导致堆栈溢出错误

所以据我了解,正则表达式匹配器存在问题,而且我的程序中的某些内容太长了?(我确实有非常长的函数名和很多参数,而且我还使用了非常大的容器。)

我真的很想解决这个问题,但我对调试 Emacs Lisp 一无所知,有没有人可以帮助我?

这是我从 Emacs 内部调试器得到的输出:http: //pastebin.com/5CKe74e6

我还应该指出,我使用的是 Emacs Prelude 的个性化版本。

0 投票
2 回答
776 浏览

python - emacs 中的 gdb:python 命令(py 和 pi)

我想使用 gdb 调试一个 c++ 程序。我使用pipy命令从 gdb 中评估 python 命令,当我从命令行调用 gdb 时效果很好。但是,当我在 emacs 中使用M-x gdbthen调用 gdb 时gdb -i=mi file_name,会出现以下错误:

  • pi命令正确地打开了一个交互式 python shell,但是这个 shell 的任何输入都会产生如下错误:

文件“stdin”,第 1 行
-interpreter-exec 控制台“2”
SyntaxError:无效语法

  • py命令适用于单个命令(如py print 2+2),但不适用于多个命令

我可以通过启动 gdb 来解决这些问题gud-gdb,但是我不支持gdb-many-windows. 也许问题是由输入后的提示引起的pi,不再是(gdb)而是>>>而是?

0 投票
0 回答
297 浏览

emacs - Emacs 24 中的 GDB 搞砸了

我将 emacs24.5.1和 GDB7.10与 GUD 集成结合使用。

我使用以下 bash 命令启动 GUD:

我设置了以下变量

  • '(gdb-show-main t)

使用以前版本的 emacs (23),我有两个窗口/缓冲区:

  1. 正在运行的程序的输出和 GUD 提示(gdb)
  2. 显示代码和调试器所在位置的代码/源窗口

每当我*gud-binary*在 emacs 23 中进入窗口时,结果都会显示在下面的源窗口中。

在 emacs 24 中奇怪的是,*gud-binary*每当我进入 gdb 时,emacs 都会用源缓冲区替换缓冲区。似乎每个缓冲区都显示在第一个窗口中。所以,第二个窗口实际上根本没有任何功能。

我该如何解决?

0 投票
1 回答
76 浏览

gdb - gdb Python API:异常消失?

有谁知道为什么在某些地方,gdb 中的 Python 代码不能正确处理异常?或者,为了澄清,异常消息可能会发送到 *gud 缓冲区以外的其他地方。gdb 没有像预期的那样将控制权返回给提示符。

(我在 Emacs (24.5.1) gud 模式下使用 GNU gdb (GDB) 7.11.50.20160212-git)

例如:

当处理“SomeEvent”时,它只会执行“__call__”直到错误的代码,返回,然后继续正常操作(如我所见)。

我在其他“回调”类型方法中注意到了这种行为,例如子类 gdb.Breakpoint 的 Stop()。