问题标签 [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.
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
并逐步调用foo
和bar
。当bar
被调用时,主框架将被提升到 gdb 框架上,因为 bar.c 已经在那里可见,但键盘焦点将保留在 gdb 框架中。
我认为问题函数gdb-display-source-buffer
在 gud.el.gz 中。我打算尝试用 覆盖它defadvice
,但我不太熟悉建议。如果我弄明白了,我会在这里发布答案。
emacs - 如何强制欧洲央行将 GUD 缓冲区视为编译缓冲区?
我试过这样做:
但它似乎不起作用。我做错了什么?
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() 命令?
emacs - 以编程方式将 Emacs 窗口设置为输入焦点
如何以编程方式强制我的 Emacs X Window 获得当前用户输入焦点?
我想在下面的 Bash 脚本中使用它
使 Emacs 窗口自动获得窗口焦点。
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 名称。
提前致谢。
debugging - Emacs 中 GDB 中的 `info args`
Emacs 的 GDB 集成使Locals Buffer几乎显示了(gdb) info locals
. 有没有办法也显示(gdb) info args
当前帧的结果(每次选择另一个帧时都不必手动输入)?
regex - 如何修复emacs中的“正则表达式匹配器中的堆栈溢出”
我是 Emacs 的忠实粉丝,并且经常使用它,尤其是在编程和调试(使用 gud)(C/C++)时。
最近我不得不调试一个程序(相当简单,但需要计算大量数据(图论)),但我遇到了一个相当烦人的问题。在程序的逐步执行过程中,我收到以下错误:
我做了一些研究以找出它是什么,我发现了这篇文章:Debugging in emacs (with gud) 通常会导致堆栈溢出错误。
所以据我了解,正则表达式匹配器存在问题,而且我的程序中的某些内容太长了?(我确实有非常长的函数名和很多参数,而且我还使用了非常大的容器。)
我真的很想解决这个问题,但我对调试 Emacs Lisp 一无所知,有没有人可以帮助我?
这是我从 Emacs 内部调试器得到的输出:http: //pastebin.com/5CKe74e6
我还应该指出,我使用的是 Emacs Prelude 的个性化版本。
python - emacs 中的 gdb:python 命令(py 和 pi)
我想使用 gdb 调试一个 c++ 程序。我使用pi
和py
命令从 gdb 中评估 python 命令,当我从命令行调用 gdb 时效果很好。但是,当我在 emacs 中使用M-x gdb
then调用 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)
而是>>>
而是?
emacs - Emacs 24 中的 GDB 搞砸了
我将 emacs24.5.1
和 GDB7.10
与 GUD 集成结合使用。
我使用以下 bash 命令启动 GUD:
我设置了以下变量
'(gdb-show-main t)
使用以前版本的 emacs (23),我有两个窗口/缓冲区:
- 正在运行的程序的输出和 GUD 提示
(gdb)
- 显示代码和调试器所在位置的代码/源窗口
每当我*gud-binary*
在 emacs 23 中进入窗口时,结果都会显示在下面的源窗口中。
在 emacs 24 中奇怪的是,*gud-binary*
每当我进入 gdb 时,emacs 都会用源缓冲区替换缓冲区。似乎每个缓冲区都显示在第一个窗口中。所以,第二个窗口实际上根本没有任何功能。
我该如何解决?
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()。