Lately I have been doing some development on the LINUX and UNIX platforms. And I have quickly come to despise an entire generation of back-bone technologies. I am talking about the tools that make up most of these systems; make, vi, telnet, grep and these kinds of tools. The world would have been a better place if these technologies had been retired 10 years ago. And yet, many users of these systems tends to hail their versatility. If they only would turn their heads away from the terminal screen for a moment, they would see that the world had moved on a long time ago...
Anyway, I once promised myself never to use a vi editor because life is too short to learn another move cursor down key-combination, and since there is no such term as "Integrated Development Environment" available in the vocabulary on these platforms, I decided to make one myself. Based from a Windows PC of course.
BVRDEThe BVRDE is despite its silly name, a fully integrated development environment for remote cross-platform compiling and debugging of UNIX and LINUX terminal applications.
There are many editor systems available on Windows; many of which allow some form of remote connection. But they rarely take remote compiling seriously. So I decided to make an entire IDE with seamless integrated compilation and debugging possibilities.
Here is a list of features of the application so far:
- Syntax highlighting editor
- Remote Compilation
- Remote Debugging using GDB and DBX
- Watches, local variables and call-stack
- Code folding, mouse-over information and brace matching
- Intelli-sense (TAGS support, C++ lexer)
- HTML and XML preview
- Support for Telnet, RLogin and SSH protocols
Project ManagementThe IDE does not include a project manager. That is, it includes a Project Explorer where you can add folders and files to a project - but it does not convert your project settings into a compilation support script (uhm, a Makefile). The system can however assist you in creating a new Makefile for your remote project. Once ready for compilation, the BVRDE system can take over and manage the compilation commands and interactive debugging.
Even though local files can be added to a project in the IDE, the primary support for file management is through a FTP or SFTP connection. The IDE will connect using FTP to the remote target to fetch and store files. This means that all files are stored on the remote target. No resources are needed on your local Windows PC - there is no need to additionally install a compiler tool-chain locally.
EditingI'm not trying to develop a text editor here, but some tolerable editing features must be available even for the most savvy programmer. So I'm using the Scintilla editor, which by itself has a rich feature-set, and is easy to extend with cool features such as intelli-sense. It also includes features such as syntax coloring, mouse hover information, folding of code, line numbers, brace highlighting, and smart indentation.
BVRDE has some support for TAG files. They are files that contain symbolic
information extracted from the source files, and are created with various utilities such
as the CTAG utility.
Tags are used to provide intelli-sense (auto-listing of class members) and type information when you hover above a member variable with the mouse. Please note that tag information is quite inadequate for a professional IDE, but it seems popular with various UNIX tools.
To include tag information into the IDE, simple add the tag file to the project (it must be named "tags"). For performance considerations, you could add the file as a local file.
For the files you add to the Project Explorer, the IDE will use a custom written C++ parser to scan the files and produce its own intelli-sense information. This will allow you to have updated and much more elaborate information in the IDE.
CompilingWhen the IDE wants to compile the remote project, it will start a Telnet, RLogin or SSH connection to the remote host. Then it will simply execute the build command. Usually this will be a make command or similar - but this can be customized.
All compile output is grabbed and redirected to an output window that slides into view when the project is compiling. To jump directly to a line marked with an error, simply double-click on the output line.
Run ProcessYou can run the remote process at any time to test your result: Simply hit the F5 key to start it.
A Telnet session with the remote target is started and the remote process
is launched. All output are displayed in the telnet output window.
The IDE concentrates on non-interactive terminal applications only. This means that it currently does not accept user input in the telnet window. If your process requires user input, pipe in a user response file as input stream. To configure your process launch conditions, modify the Project Properties by right-clicking on the Project and choose the "Properties" menu-item.
DebuggingThe IDE fully integrates with the GNU GDB debugger and the Sun DBX debugger. The point to make here, is that the debugger is located entirely on the remote target. There is no need to install cross-platform debugging support or whatever - if you can debug the process on the remote target, you will also be able to debug it from your Windows PC.
The debug session is started through a Telnet prompt. You will never see
anything related to Telnet while debugging, because it's all abstracted away internally
in the appllication.
The debug manager allows you to to set breakpoints, add watches, see local variables and argument values, mouse hover information, inspect the registers and call stack.
The GDB needs to be version 5.3 or better to work with the IDE, or alternatively
use the most recent Sun DBX debugger.
Your files must be compiled with the
-g GCC compiler directive
to include the symbolic debug information needed by GDB. The IDE sets up
an environment variable called
DEBUG_OPTIONS depending whether
you compile in Release or Debug mode.
License TermsThe BVRDE tool is released under the GNU GPL license.
Source Code DependenciesWindows 2000 or XP
Microsoft Windows SDK
Microsoft Visual C++ 6.0
Microsoft WTL 7.0 Library
Microsoft XML 4.0 SDK
- Make sure that GCC/G++ and GDB is available on the remote target.
- Make sure your project compiles on the remote target.
- Run the install module locally.
- Create a new project using the wizard.
Useful LinksThe Scintilla Editor
GNU G++ Compiler
GNU GDB Debugger
|Project on SourceForge|