这个标题看起来有点弱智,因为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和编译
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++语句进去就行。
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. 登陆到Linux上,跳到/mnt/share/test/Debug目录,跑make clean & make 生成Linux下的可执行文件 (文件后缀还是exe,呵呵).
2. 用gdbserver启动这个程序
这里的192.168.0.102是Linux机器的地址
3. 在Eclipse的Debug Configurations中新建一个Remote c/c++ Application
4. 指定gdb可执行文件
5. 制定gdbserver的ip和端口
6. 在Eclipse中配置源代码搜索路径
"" title="sourcelookup" width="584" height="366" class="alignnone size-large wp-image-348" />
7. 调试,可以看到Eclipse停在了我们设置的断点那里 (如果无法设置断点,应该是你还还设置代码搜索路径)。
我参考了这篇文章:
Windows 下使用Eclipse CDT 远程调试 Linux C/C++ 程序