mcrist

Debugging using Visual Studio

Discussion created by mcrist on Apr 9, 2019

I've been working on an Addin for xPCB Layout using a presentation and example from an August 2010 presentation that John Dube gave called "Developing Custom Applications with Expedition Automation." This presentation walks through using the vecide75.dll and InnovedaAddin75.tlb to create a registerable COM dll. The dll is loaded by xPCB Layout (which was still called Expedition at the time), allowing for the development of plugins to perform more advanced capabilities.

 

There are many upsides to this type of development. The project that I'm working on is a mix of ATL C++ and C# in a Visual Studio 2017 solution. The full language features are available, allowing things like the use of the Sharepoint Client Side Object Model to communicate between the plugin and a Sharepoint deployment. The downside (for most of the development) was the inability to use the Visual Studio debugger. However, as of last week, John and I have figured out how to get that working too. Here are the steps for VX 2.1 and Visual Studio 2017:

  1. Start the MGC PCB CMD terminal
  2. From the command prompt, run C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe (this will launch Visual Studio 2017 with all of the correct environment variables needed to run xPCB Layout)
  3. When Visual Studio comes up, open the solution for the addin. In Project -> Properties -> Debugging, change the command to %SDDHOME%\wg\win32\bin\ExpeditionPCB.exe (or win64, as appropriate)
  4. Set the working directory to %SDDHOME%\wg\win32\bin (or win64, as appropriate)
  5. Set the Debugger type to Auto

Once these are set, you should be able to debug using the Local Windows Debugger. Breakpoints in the code can be set, execution can be paused and stepped through, and the full functionality of the debugger is available.

 

P.S. I have had trouble with automated software testing products and their interaction with Expedition in the past...this may be because they were not started with the MGC PCB command prompt. This is another experiment I plan to run in the coming weeks.

Outcomes