在WSL(Ubuntu)上运行eclipse,调试C语言的makefile项目

电脑上安装了wsl和ubuntu22.04, 现在调试一套c程序,原来在wsl环境下makefile成功,运行成功,现在需要深入分析和调试程序,要用单步跟踪,试验使用eclipse进行管理程序。
1 在wsl上安装eclipse
由于eclipse是一个java内核的程序,因此必须要求wsl上安装了 jdk。 我安装的是openJDK17。
首先下载eclipse指定版本:  Eclipse IDE for C/C++ Developers,Linux 86_64,  
下载回来是eclipse-cpp-2023-06-R-linux-gtk-x86_64.tar.gz  380MB
在wsl里面解压缩并安装eclipse:
tar -zxvf eclipse-cpp-2023-06-R-linux-gtk-x86_64.tar.gz
cd eclipse
./eclipse 

出现错误:
tom@Tom-Hongtao:/mnt/c/d/tools/c编译工具/eclipse$ ./eclipse
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
SWT OS.java Error: Failed to load swt-pi3, loading swt-pi4 as fallback.
Eclipse:
An error has occurred. See the log file
/mnt/c/d/tools/c编译工具/eclipse/configuration/1691131677132.log.
tom@Tom-Hongtao:/mnt/c/d/tools/c编译工具/eclipse$   

这是因为WSL中没有安装libswt-gtk-4-java。这是swt的基础库。安装即可。

 
sudo apt install libswt-gtk-4-java

[sudo] password for tom:
Sorry, try again.
[sudo] password for tom:
Reading package lists... Done
Building dependency tree... Done
Unpacking libgtk-3-0:amd64 (3.24.33-1ubuntu2) ...
Selecting previously unselected package libgtk-3-bin.
Preparing to unpack .../08-libgtk-3-bin_3.24.33-1ubuntu2_amd64.deb ...
Unpacking libgtk-3-bin (3.24.33-1ubuntu2) ...
Selecting previously unselected package libswt-gtk-4-jni.
Preparing to unpack .../09-libswt-gtk-4-jni_4.20.0-2_amd64.deb ...
Unpacking libswt-gtk-4-jni (4.20.0-2) ...
Selecting previously unselected package libswt-gtk-4-java.
Preparing to unpack .../10-libswt-gtk-4-java_4.20.0-2_amd64.deb ...
Unpacking libswt-gtk-4-java (4.20.0-2) ...
Setting up libcolord2:amd64 (1.4.6-1) ...
Setting up libepoxy0:amd64 (1.5.10-1) ...
Setting up libwayland-egl1:amd64 (1.20.0-1ubuntu0.1) ...
Setting up libgtk-3-common (3.24.33-1ubuntu2) ...
Setting up libxkbcommon0:amd64 (1.4.0-1) ...
Setting up libwayland-client0:amd64 (1.20.0-1ubuntu0.1) ...
Setting up libwayland-cursor0:amd64 (1.20.0-1ubuntu0.1) ...
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for libglib2.0-0:amd64 (2.72.4-0ubuntu2.2) ...
Setting up libgtk-3-0:amd64 (3.24.33-1ubuntu2) ...
Processing triggers for libc-bin (2.35-0ubuntu3.1) ...
/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link


Setting up libgtk-3-bin (3.24.33-1ubuntu2) ...
Setting up libswt-gtk-4-jni (4.20.0-2) ...
Setting up libswt-gtk-4-java (4.20.0-2) ...
tom@Tom-Hongtao:/mnt/c/d/tools/c编译工具/eclipse$

这时就可以运行成功了:
tom@Tom-Hongtao:/mnt/c/d/tools/c编译工具/eclipse$./eclipse

2 运行eclipse

 启动eclipse后会出现一个经典的eclipse启动窗口,然后在任务栏上的图标是小企鹅。
指定工作空间,就用这个默认目录:
出现熟悉的Welcome窗口:
之后就可以打开原来在wsl上的c工程源码,可以直接运行makefile中的任务,完美运行,没有错误。
C源码包:exip-0.5.4.zip   OpenEXI download | SourceForge.net 
点击Build targets--all, 运行结果如下, 与在wsl中运行一模一样。
3  在eclipse中运行应用程序
运行任务 examples,编译生成 exipe、exipd。 
先启动下exipd试试: 点击绿色三角图标旁边的下箭头,在列表中选择第一个运行配置。
这些运行配置在源代码目录中是.launches/ ,每一个都是配置好了启动参数,可以直接运行。
 
这些具体的运行参数可以查看: 菜单栏Run-->Run Configuratuons... 
在Main页面看到: 项目是exip, 启动的应用程序是 bin/examples/exipd,   
在Arguments页面看到:exipd程序的启动参数是 -xml -schema=src/grammarGen/xmlSchema/XMLSchema-xsd.exi,src/grammarGen/xmlSchema/xml-xsd.exi src/grammarGen/xmlSchema/XMLSchema-schema-xsd.exi
运行成功的console信息:
==== hhahahhaha======<?xml version="1.0" encoding="UTF-8"?>
<p0:schema xmlns:p0="http://www.w3.org/2001/XMLSchema" blockDefault="#all" elementFormDefault="qualified" http://www.w3.org/XML/1998/namespace:lang="EN" targetNamespace="http://www.w3.org/2001/XMLSchema" version="1.0">
<p0:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
</p0:import>
<p0:complexType name="openAttrs">
<p0:complexContent>
<p0:restriction base="xs:anyType">
<p0:anyAttribute namespace="##other" processContents="lax">
</p0:anyAttribute>
</p0:restriction>

。。。。。。

</p0:anyAttribute>
</p0:restriction>
</p0:complexContent>
</p0:complexType>
</p0:element>
</p0:schema>

Successful parsing of the EXI stream: src/grammarGen/xmlSchema/XMLSchema-schema-xsd.exi

4 调试应用程序

我们调试程序时经常添加些打印语句,这时必须要先运行任务 examples,重新编译生成exipe、exipd,然后启动调试程序,才能看到打印信息。
点击debug图标旁的下拉箭头,选择应用程序:exipd (XML schema),就切换到debug模式下运行了,可以断点、单步跟踪等等。
大功告成,真心觉得比vscode编辑c代码方便多了~~~

猜你喜欢

转载自blog.csdn.net/u012084827/article/details/132106733