`
skzr.org
  • 浏览: 365431 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

[Fixed Eclipse CDT]可正常运行,无法调试

阅读更多

 

  1. Eclipse CDT是开发C/C++的
  2. 现象:
    1. 直接使用Eclipse IDE for C/C++ Developers可正常编写运行、调试c/c++
    2. 使用Eclipse for RCP RAP,已集成了MyEclipse,再安装Eclipse CDT插件时,只能正常运行,但是无法调试程序,运行调试时报异常(貌似是spring ide插件工具和CDT有冲突,毕竟是java开发环境来开发c/c++):
      ENTRY org.eclipse.core.jobs 4 2 2011-07-19 02:27:53.796
      MESSAGE An internal error occurred during: "Launching tst".
      STACK 0
      java.lang.IllegalArgumentException
      	at org.eclipse.osgi.framework.internal.core.PackageAdminImpl.getBundles(PackageAdminImpl.java:571)
      	at org.eclipse.core.internal.runtime.InternalPlatform.getBundle(InternalPlatform.java:181)
      	at org.eclipse.core.runtime.Platform.getBundle(Platform.java:1416)
      	at org.springframework.ide.eclipse.core.BundleStateLocationVariableResolver.resolveValue(BundleStateLocationVariableResolver.java:32)
      	at org.eclipse.core.internal.variables.DynamicVariable.getValue(DynamicVariable.java:54)
      	at org.eclipse.cdt.internal.core.cdtvariables.EclipseVariablesVariableSupplier$EclipseVarMacro.loadValue(EclipseVariablesVariableSupplier.java:103)
      	at org.eclipse.cdt.internal.core.cdtvariables.EclipseVariablesVariableSupplier$EclipseVarMacro.getStringValue(EclipseVariablesVariableSupplier.java:90)
      	at org.eclipse.cdt.dsf.gdb.launching.LaunchUtils.getLaunchEnvironment(LaunchUtils.java:389)
      	at org.eclipse.cdt.dsf.gdb.launching.LaunchUtils.getGDBVersion(LaunchUtils.java:281)
      	at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.getGDBVersion(GdbLaunchDelegate.java:243)
      	at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:129)
      	at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:83)
      	at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:72)
      	at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:853)
      	at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:702)
      	at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:924)
      	at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1128)
      	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
       
  3. 解决:
    1. 创建插件项目,引入CDT依赖包,org.eclipse.cdt.dsf.gdb.launching.LaunchUtils.getLaunchEnvironment(LaunchUtils.java:389)处设置断点,观察问题现象
    2. 通过2种不同的目标插件平台:a) 集成了MyEclipse的eclipse RCP 和 b) Eclipse IDE for C/C++ Developers,对比发现他们获取到的env内容有差别,关键在bundle_loc、bundle_state_loc、bundle_version这三个,这三个在org.springframework.ide.eclipse.core/META-INF/MANIFEST.MF参考代码 
    3. 因为对CDT和Spring IDE插件都不了解,治标修复LaunchUtils代码,getLaunchEnvironmen方法中的envMap.put(var.getName(), var.getStringValue());替换为:
      try {
      	envMap.put(var.getName(), var.getStringValue());
      } catch (IllegalArgumentException e) {
      	if (var.getName() == null || !var.getName().startsWith("bundle_")) throw e;
      	ResourcesPlugin.getPlugin().getLog().log(new Status(IStatus.INFO, GdbPlugin.PLUGIN_ID, "ignore env variable [" + var.getName() + "] fetch error!", e));
      }
       
    4. 替换包org.eclipse.cdt.dsf.gdb_3.0.0.201102110609.jar中的二进制代码即可
  4. 附件说明:
    1. zip包是LaunchUtils.class代码
    2. org.eclipse.cdt.dsf.gdb_3.0.0.201102110609.jar是修复后的包
1
2
分享到:
评论
1 楼 skzr.org 2011-07-20  
ubuntu使用也有2年了,很多开源的都是c/c++的,处于对性能和优秀软件的了解需要。
java主业,c/c++兼顾下。

相关推荐

    windows下配置eclipse+CDT+Cygwin调试平台

    总结来说,这个过程包括了安装JDK以支持Eclipse运行,安装Eclipse及其多国语言包,安装CDT以获得C/C++开发支持,以及安装Cygwin提供Unix-like环境并配置调试工具。通过这些步骤,你将在Windows下拥有一个完整的...

    Eclipse CDT API文档

    - 使用CDT API开发的插件可以通过Eclipse插件开发环境(PDE)进行调试和测试,确保与CDT以及其他Eclipse插件的兼容性。 7. **最佳实践**: - 遵循Eclipse插件开发的最佳实践,比如使用模型驱动的开发方式,可以...

    Eclipse CDT + C / C++ 环境安装+编译_调试

    标题 "Eclipse CDT + C / C++ 环境安装+编译_调试" 提供了关于在Eclipse集成开发环境中配置C和C++编程环境的信息。这通常涉及到安装Eclipse CDT(C/C++ Development Tooling)插件,以及设置编译器和调试器。我们将...

    ubuntu 下eclipse CDT搭建交叉编译开发环境

    ubuntu 下eclipse CDT搭建交叉编译开发环境 本文将详细介绍如何在ubuntu平台下使用eclipse CDT搭建交叉编译开发环境,包括准备相关软件安装包、安装软件包、应用程序编译、导入现存的makefile project、Qt 插件安装...

    免费下载:eclipse cdt编译C++的插件

    它包含了源代码编辑器、构建工具、调试器以及项目管理和版本控制等多种功能,是C/C++开发者在Eclipse平台上不可或缺的插件。 首先,Eclipse CDT的安装过程是相当直观的。用户可以通过Eclipse的“帮助”菜单选择...

    eclipse cdt 解析C++ AST

    Eclipse CDT(C/C++ Development Tooling)是Eclipse的一个插件,主要用于C和C++程序的开发环境。它不仅提供了代码编写的基本功能,还能够解析和分析C++代码,构建抽象语法树(Abstract Syntax Tree,简称AST),并...

    eclipse-CDT远程调试

    eclipsecdt与arm-linuc-gdb,gbdserver配合实现远程调试。含有dropbear,vfstp,openssh安装教程。

    eclipse CDT最新插件9.3.0版

    Eclipse CDT是Eclipse IDE的一个组成部分,它提供了丰富的C和C++开发工具,包括源代码编辑器、构建工具、调试器、项目管理器等。通过与Eclipse平台的紧密集成,CDT提供了一站式的开发体验。 2. **版本9.3.0**: ...

    eclipse cdt.9.10源码

    8. **扩展性**:CDT设计为高度可扩展,允许开发人员添加自定义的构建步骤、编译器配置或调试器支持。这部分源码主要涉及插件体系结构和API的设计。 9. **版本控制集成**:CDT与常见的版本控制系统(如Git、SVN)...

    eclipse_cdt的使用教程

    Eclipse CDT成为了一个理想的开发工具,它提供了一种高效、直观的方式来编写、测试和调试C/C++代码。 以下是使用Eclipse CDT的一些关键知识点: 1. **安装CDT**:首先,你需要一个基础的Eclipse IDE,可以从官方...

    linux安装eclipseCDT对应的jdk和eclipseCDT安装包

    Eclipse CDT是Eclipse平台的一部分,允许开发者利用Eclipse的强大功能来创建、调试和管理C/C++项目。而JDK(Java Development Kit)则是开发和运行Java应用程序的必备工具集。在这个资源中,我们包含了2023年最新的...

    Eclipse CDT(C & C++ Development Tooling)开发环境的搭建.pdf

    ### Eclipse CDT (C & C++ Development Tooling) 开发环境的搭建知识点解析 #### 一、概述 本文档详细介绍了如何在Windows环境下搭建Eclipse CDT (C & C++ Development Tooling) 开发环境的过程。该过程主要包括...

    eclipse cdt9.11源码

    1. **集成开发环境(IDE)**:Eclipse CDT是基于Eclipse平台的,Eclipse是一个开放源代码的、基于Java的可扩展开发平台。它提供了一个框架和一组服务,用于通过插件构建开发工具。 2. **C/C++支持**:CDT允许用户...

    org.eclipse.cdt.ui_6.6.100.201911141456.jar

    步骤: 1.下载CDT 9.10 http://download.eclipse.org/tools/cdt/releases/9.10 ...将本补丁名字改成你安装的org.eclipse.cdt.ui的名字(我的是org.eclipse.cdt.ui_6.6.100.201911141456.jar)后放到plugins目录里

    org.eclipse.cdt.ui_6.7.0.202003021149.zip

    如果Eclipse版本过低,可能无法支持高版本的CDT插件,反之,如果Eclipse版本过高,低版本的CDT插件可能无法正常工作。因此,在进行版本替换前,务必了解当前Eclipse的版本信息。 除了自动补全,Eclipse CDT还提供了...

Global site tag (gtag.js) - Google Analytics