Wednesday, November 19, 2008

Remote Software Debug?

Here's a query for all you software professionals out there: Are there tools or techniques that allow programmers to debug a program remotely? That is, can the executable and its data be on one server, and the source code and the engineer driving the debugger be on another server? This could be two servers in the same farm, or, more interestingly, the program could be running at the customer site, while the debugging is driven from the vendor's site.

I'm not a professional software engineer (just another Perl hacker), but this seems that it ought to be possible. I just don't know how to pull it off.


Harry Gries said...

Hi John,

Interesting question. It reminds me of Daniel Payne's blog post on whether Live Chat existed for EDA tools.

I'm also not a software person, but I'm sure it's technically possible to implement something equivalent. One could ship the debugger version of the code and add some sort of encryption and password protection to allow the EDA vendor to access the debugger (e.g. thru VNC). This would also prevent the customer or some nefarious competitor from accessing the source code himself.
The debugger version has additional code compiled in, so the executable would be larger as well as the memory footprint, but I don't think the overhead would be all that much.

Another way to accomplish this would be to have the software hosted by the EDA vendor in a shared hosted environment like Cadence VCAD or Synopsys DSA. In that case the software resides at the EDA vendor.

Eventually, when all EDA software is hosted on a cloud ans sold under a Software-as-a-Service model, access will be even easier and the expectation of vendor support will be understood as part of the software service. Alas, that may still be years away.

sandeep said...

hi John,
In short - yes it is possible. I have used it, however, on Windows. Essentially, the concept is:
that u run an auxiliary remote-debug-helper (e.g. Visual Studio remote debugger or gdbserver) on the same machine as the target program (to-be-debugged).

Usually this helper is run with elevated priveleges. your actual debugger (on whichever machine it resides) communicates with this helper, which in turn relays the debug commands to the program.
Your symbol-file needs to only reside on your home machine (with ur debugger)


Me said...

I believe it is technically doable, but will add complexity and even run-time penalty for these additional hooks. Software developers will do what their customers want if they truly value supportability.

But the reality of the situation is EDA users would never buy a EDA product that is a little less stable and run a bit slower over another product just because it has these debugging hooks? You tell me.