在Windows上用Eclipse远程调试Linux下的C++程序

161 篇文章 0 订阅
117 篇文章 0 订阅

在Windows上用Eclipse远程调试Linux下的C++程序

这个标题看起来有点弱智,因为Eclipse本来就可以Linux下跑,那直接本地调试就得了,还搞啥远程调试。哎,别说,我还真碰到有这需求的。试想如果你的版本控制软件在Linux上由于种种原因跑不起来(要么是License,要么域用户之类的问题),那么你只能在Windows下check out你的代码,这时候如果你们能够在Windows上直接把活都干了,还是比较爽的(我个人是于在Linux上把活干了的,毕竟Linux上工具多一些)。

要在Windows上装的东东
1. Mingw (也可以是Cygwin,不过Mingw看起来似乎要小点)
2. gdb (mingw再带了一个,但是不能用于远程调试Linux下的程序,原因是target不一样)
3. Eclipse c++ IDE
4. Python (编译gdb时用到libpython27.a这个静态库)

安装Mingw
我的Windows和Linux都是64位的,不过这里的Mingw安装32位的就行了,
1. 从Sourceforge上下载mingw-get-setup.exe 并安装, 选择mingw32-gcc-g++和msys-base即可。

编译gdb
1. 从Sourceforge下载gdb windows的源代码,找最新的那个就行。
2. 复制到Mingw的用户目录下 (比如我的就在{Mingw安装目录}\msys\1.0\home\linmingren)。
3. 启动{Mingw安装目录}\msys\1.0下的msys.bat来启动Mingw模拟环境。
4. 解压,configure和编译

1
2
3
4
5
tar - xvf gdb - 7.6.tar.gz
cd gdb - 7.6
. / configure -- target = x86_64 - generic - linux - gnu (如果你的 Linux32位,可以用 -- target = i686 - pc - linux - gnu )
make
make install

make的过程都会出下面这个错(我试过用mingw-get-inst-20120426.exe安装出来的Mingw编译就可以通过,最新的那几个Mingw编译都会出这个错)

原因是util.c中的do-while循环少了个分号,我的妈呀,这代码是实习生写的吗。

加上分号后,make就成功了

5. 生成的可执行文件在{Mingw安装目录}\msys\1.0\local\bin下面。

建立Eclipse工程
先下载Eclipse C++ IDE,我下的是eclipse-cpp-kepler-R-win32-x86_64,然后按下面的步骤建立一个C++工程。
1. 创建C++工程
Hello World 或者Empty 随便你。只要Toolchains选择了MinGW GCC就行 (如果你看不到这个选项,请把你的Mingw的bin目录加到PATH中)。

2. 加一个C++文件,内容随便,搞点C++语句进去就行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <map>
#include <list>
int main ( ) {
     std :: map < int , std :: string > map ;
     std :: list < std :: string > list ;
     list . push_back ( "string1" ) ;
     list . push_back ( "string2" ) ;
     map . insert ( std :: make_pair ( 1 , "value1" ) ) ;
map . insert ( std :: make_pair ( 2 , "value2" ) ) ;
std :: cout << * list . begin ( ) << std :: endl ;
std :: cout << map . begin ( ) -> second << std :: endl ;
     return 0 ;
}

3. 按Build All或者Build Project来编译它,这时Eclipse会生成Windows下的一个可执行文件,还会生成一个makefile文件。我们后面需要用这个makefile编译出Linux版本的可执行文件。

共享代码给Linux
这里用的cifs协议来把Windows上的目录共享给Linux,这样比通过samba共享要简单一点。

1. 在Windows上把Eclipse工程所在的目录共享,记得把权限改成共享用户可以写,因为在Linux下编译时需要生成文件(为了简单,我对所有人都可以写)。

2. 在Linux上mount这个目录
其中的用户名和密码是Windows上的共享用户的名字和密码,192.168.0.101就是Windows的ip。

1
mount - t cifs - o username = share , password = 123456 //192.168.0.101/test /mnt/share

远程调试

1. 登陆到Linux上,跳到/mnt/share/test/Debug目录,跑make clean & make 生成Linux下的可执行文件 (文件后缀还是exe,呵呵).
2. 用gdbserver启动这个程序
这里的192.168.0.102是Linux机器的地址

1
gdbserver 192.168.0.102 : 10000 . / test . exe

3. 在Eclipse的Debug Configurations中新建一个Remote c/c++ Application

4. 指定gdb可执行文件

5. 制定gdbserver的ip和端口

6. 在Eclipse中配置源代码搜索路径
<br "" title="sourcelookup" width="584" height="366" class="alignnone size-large wp-image-348" />
7. 调试,可以看到Eclipse停在了我们设置的断点那里 (如果无法设置断点,应该是你还还设置代码搜索路径)。

我参考了这篇文章:

Windows 下使用Eclipse CDT 远程调试 Linux C/C++ 程序

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值