Eclipse CDT:无法调试或终止应用程序

时间:2010-03-29 13:12:46

标签: c++ gdb cygwin g++ eclipse-cdt

我让Eclipse设置得非常好,可以通过Cygwin运行G ++编译器。甚至是the character encoding is set up correctly

我的配置似乎还有问题:我无法调试。调试视图中的暂停按钮被禁用,我的应用程序树中没有出现任何线程。似乎gdb根本就没有与Eclipse通信。

(imageshack) Debug view in Eclipse http://img265.imageshack.us/img265/4799/gdb1u.png

目前,我的调试设置如下:

  

调试器:“Cygwin gdb Debugger”

     

GDB调试器:gdb

     

GDB命令文件:.gdbinit

     

协议:默认

我应该在这里提一下,我不知道.gdbinit做了什么;在我的项目中,它只是一个空文件。

我的配置有什么问题?

调试

尝试在调试模式下终止应用程序时,Eclipse会显示以下错误:

  

目标请求失败:无法中断。

我也无法杀死这个过程;我必须杀死它的父gdb.exe,这反过来会杀死我的申请。

运行

正常运行时,会调用一堆kill.exe,什么也不做,而Eclipse会显示以下错误:

  

终止失败。

我可以从任务管理器中删除FaceDetector.exe

Process Explorer

这就是Process Explorer中的样子(左侧调试,右侧调试):

(imageshack) Process tree of Eclipse http://img707.imageshack.us/img707/4136/gdb3.png

3 个答案:

答案 0 :(得分:2)

当eclipse作为普通用户运行时,您是否检查过这是否是将调试器附加到以root身份运行的应用程序的实例? (如this thread

您是否尝试以管理员身份运行eclipse,只是为了检查问题是否仍然存在?


此外,comments says

  

我花了一整天的时间来分析为什么我无法从日食中消除我的gdb   最后我发现路径中没有找到kill.exe ,eclipse使用它来发送SIGINT到cygwin gdb。   因此,如果有人能够使用eclipse和gdb进行调试,并且无法暂停正在运行的调试目标,检查是否存在cygwin kill.exe

答案 1 :(得分:2)

我发现的唯一解决方法是直接从Cygwin启动Eclipse。

启动Cygwin Bash Shell,导航到Eclipse的安装目录,然后输入./eclipse.exe

CDT与Cygwin的通信方式似乎存在一些问题;传递标准输出并执行kill.exe,但kill.exe实际上不会成功终止应用程序,除非Eclipse通过Cygwin运行。通过gdb进行调试会产生类似的问题;这也是通过解决方法解决的。

答案 2 :(得分:0)

基于评论和其他答案中的答案,如果我必须猜测,(假设您已经安装了足够的cygwin部分),您可能希望将cygwin bin目录添加到您的Windows路径中。要做到这一点,请转到我的计算机的属性,在其中一个选项卡上(我相信启动),可以选择设置环境变量。其中一个变量是PATH变量。将/ usr / bin目录的 windows 路径添加到该路径,eclipse应该能够找到kill。