7

我正在尝试从 Emacs v22.3.1 迁移到 v23.1.1,一切都很顺利,直到我尝试在 Emacs 中使用 gud 运行 gdb。

当我执行 meta-x gdb 并给出“gdb /my/executable/here”命令时,窗口会正常显示,但是当我在 gdb 提示符下按回车键执行命令时键入命令时,没有任何反应,状态栏显示“调试器:运行”,结果从未显示。我可以键入“ctrl-c ctrl-c”来终止命令并再次获得“(gdb)”提示,但另一个命令以同样的方式失败。

这是 Linux Centos v4 32 位上的 gdb v6.8。

有没有其他人遇到过这个问题?最好的方法是什么?

我从提示符(不是 gud)附加到 gdb 并得到了这个堆栈跟踪:

#0  0x00fd77a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x0020108d in poll () from /lib/tls/libc.so.6
#2  0x08111a07 in gdb_do_one_event (data=0x0) at event-loop.c:759
#3  0x0810f05f in catch_errors (func=0x8111970 <gdb_do_one_event>, func_args=0x0, errstring=0x8236200 "", mask=6) at exceptions.c:513
#4  0x080c25e7 in tui_command_loop (data=0x0) at .././gdb/tui/tui-interp.c:153
#5  0x0810f2cf in current_interp_command_loop () at interps.c:276
#6  0x0807f0b3 in captured_command_loop (data=0x0) at .././gdb/main.c:99
#7  0x0810f05f in catch_errors (func=0x807f0a8 <captured_command_loop>, func_args=0x0, errstring=0x8236200 "", mask=6) at exceptions.c:513
#8  0x0807f7eb in captured_main (data=0xbff00a60) at .././gdb/main.c:882
#9  0x0810f05f in catch_errors (func=0x807f0e0 <captured_main>, func_args=0xbff00a60, errstring=0x8236200 "", mask=6) at exceptions.c:513
#10 0x08080027 in gdb_main (args=0x7fffffff) at .././gdb/main.c:891
#11 0x0807f0a1 in main (argc=-4, argv=0xfffffffc) at gdb.c:33
#12 0x00153df3 in __libc_start_main () from /lib/tls/libc.so.6
#13 0x0807efdd in _start ()
4

2 回答 2

11

这是一个疯狂的猜测:

Emacs 的 gud-mode 要求 gdb 在打开注释的情况下运行,以便它可以正确解析输出。在重写默认行时,我一直被这个问题所困扰,emacs 在点击 Mx gdb 后会吐出。确保“--annotate=3”包含在您的 gdb 命令行中,看看是否有帮助。

于 2009-09-30T13:49:18.040 回答
1

我在 emacs-23 中使用过 gdb ......或者至少,我比你走得更远......当我尝试它时,堆栈窗口不会更新......我最终做的是使用 emacs-23用于编辑(用于抗锯齿字体的优点),但使用 emacs-22 进行调试...您可以同时安装...

于 2009-09-30T14:04:54.683 回答