Hi,
I am working on debug support in
C/C++ Unit Testing Plugin. It
means that user should be able to easily start debug
session for the "C/C++ Unit" configuration.
To make "C/C++ Unit" view work properly I need to be
able to do 2 things:
- I need to be able to provide additional program
arguments (not only stored in PROGRAM_ARGUMENTS
attribute of launch configuration);
- I need to be able to handle output and/or error
streams of the started process (and prevent its
output to "Console" view).
I also want to reuse standard CDI
& DSF launch
delegates as much
as possible and I want to place all the code
necessary for test
modules launching
in org.eclipse.cdt.testsrunner.
For CDI I decided to derive LocalCDILaunchDelegate.
To handle program arguments I have just override getProgramArgumentsArray().
To obtain output/error streams I have
wrapped the process creation in
launchLocalDebugSession()
with a custom method
wrapProcess() that by
default just return the process passed to its arguments.
However in my implementation of delegate it stores the
necessary stream and returns a wrapper (that returns
null
on
getInputStream()/
getErrorStream()
if necessary).
Is this an acceptable solution?
And if yes, could I move LocalCDILaunchDelegate from org.eclipse.cdt.launch.internal
to
org.eclipse.cdt.launch to be able to place
my delegate in
org.eclipse.cdt.testsrunner?
Or will it be better to configure package visibility in
"Runtime" tab of
plugins.xml and to add
org.eclipse.cdt.testsrunner there?
For DSF I have no solution how to do the similar things.
I have found that program arguments are provided by
GDBBackend
service and the inferior process is created in
GDBProcesses
&
GDBProcesses_7_0, but I don't know how I
can override the default behaviour. Can somebody advise
me something or is there another way to do the things
described above?
Anton