在Emacs 23中使用gdb

在Emacs 23中使用gdb,emacs,gdb,gud,Emacs,Gdb,Gud,我正在尝试从EmacsV22.3.1迁移到v23.1.1,在我尝试在Emacs中使用gud运行gdb之前,一切都进展顺利 当我执行meta-x gdb并发出“gdb/my/executable/here”命令时,窗口会显示得很好,但当我在gdb提示符下键入命令并按回车键执行该命令时,什么也没有发生,状态栏上显示“Debugger:run”,结果永远不会显示。我可以键入“ctrl-cctrl-c”终止该命令并再次获得“(gdb)”提示,但另一个命令也会以同样的方式失败 这是Linux Centos

我正在尝试从EmacsV22.3.1迁移到v23.1.1,在我尝试在Emacs中使用gud运行gdb之前,一切都进展顺利

当我执行meta-x gdb并发出“gdb/my/executable/here”命令时,窗口会显示得很好,但当我在gdb提示符下键入命令并按回车键执行该命令时,什么也没有发生,状态栏上显示“Debugger:run”,结果永远不会显示。我可以键入“ctrl-cctrl-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 ()
来自/lib/ld linux.so.2的_dl_sysinfo_int80()中的0 0x00fd77a2 #来自/lib/tls/libc.so.6的轮询()中的1 0x0020108d #事件循环处gdb_do_one_事件(数据=0x0)中的2 0x08111a07。c:759 #3异常情况下的捕获错误中的0x0810f05f(func=0x8111970,func_args=0x0,errstring=0x8236200“”,掩码=6)。c:513 #4 0x080c25e7位于..//gdb/tui/tui interp.c:153的tui_命令_循环(数据=0x0)中 #5 0x0810f2cf,位于interps.c:276的当前_interp_命令_循环()中 #6 0x0807f0b3在..//gdb/main.c:99处捕获的_命令_循环(数据=0x0)中 #7异常处的捕获错误中的0x0810f05f(func=0x807f0a8,func_args=0x0,errstring=0x8236200“”,掩码=6)。c:513 #8 0x0807f7eb在..//gdb/main.c:882处捕获的_main(数据=0xbff00a60)中 #9异常时的捕获错误(func=0x807f0e0,func参数=0xbff00a60,错误字符串=0x8236200“”,掩码=6)中的0x0810f05f。c:513 #位于..//gdb/main.c:891的gdb_main(args=0x7fffffff)中的10 0x08080027 #gdb.c:33处的main中的11 0x0807f0a1(argc=-4,argv=0xfffffffc) #12 0x00153df3位于/lib/tls/libc.so.6中的uu libc_start_main()中 #13 0x0807efdd在_开始() 这里有一个猜测:


Emacs的gud模式要求gdb在注释打开的情况下运行,以便它能够正确解析输出。我在重写默认行emacs在命中M-xGDB后吐出的代码时,就被这一点咬了一口。确保gdb命令行中包含“-annotate=3”,看看这是否有帮助。

我在emacs-23中使用过gdb。。。或者至少,我比你走得更远。。。当我尝试时,堆栈窗口不会更新。。。我最后做的是使用emacs-23进行编辑(为了消除字体锯齿),但使用emacs-22进行调试。。。您可以同时安装…

是,--annotate=3默认存在。我在emacs-23.1中使用gdb没有任何问题。如果使用M-x gud gdb使用文本模式而不是图形模式,会发生什么?请确保不要从gdb命令行中删除--fullname选项。那么M-xgdb不再受支持了吗?改为使用M-x gud gdb是否会造成任何损失?M-x gdb仍然受支持,我一直在使用它。您的问题表明没有打开注释(gdb命令行上的-annotate=3)。使用gud gdb,您无法在emacs中获得gdb的“可视”特性。这包括“gdb多窗口模式”中的专用堆栈和局部变量缓冲区。也许您的emacs配置中有什么东西正在破坏可视模式,您是否尝试过使用“-q”开关启动emacs以防止加载您的配置文件?是的,当emacs使用-q启动时,我面临同样的问题,并且我将--annotate=3传递给gdb。是的,这就是我正在做的(同时运行这两个),但我希望只运行一个,因为拥有一个统一的系统比在两个emacs可执行实例之间拆分更有效。